Získání obrázku od uživatele
Viz http://php.net/manual/en/reserved.variables. files.php
a http://php.net/manual/en/features.file- upload.php
a přátelům za údaje o tom, jak používat $_FILES
přijímat nahrané.
Jakmile budete mít obrázek v proměnné, řekněte $jpg
, nepoužívejte žádné funkce kódování/dekódování textu; bude to jen mačkat věci. Různé přístupy níže řeknou, co dělat, aby se zabránilo zakopnutí o 8bitové kódy.
Obrázek lze prezentovat třemi způsoby, každý je poněkud složitý
Uložení obrázku do databáze; zobrazení obrázku v řádku
Tento přístup jsem použil pro miniatury, ale nedoporučuji pro velké obrázky.
Uložte jej do MEDIUMBLOB
v tabulce použijte bin2hex()
v PHP převést obrázek na řetězec. Poté použijte INSERT ... VALUES (UNHEX('...'))
pro přepnutí zpět na binární na straně serveru MySQL.
Po opětovném načtení nechte odkazující PHP říct něco jako
$b64 = base64_encode($blob);
echo "<img src='data:image/jpeg;base64,$b64'/>";
Uložení obrázku do databáze; PHP skript pro generování obrázku
Používám to, když chci pomocí funkcí PHP "image*" upravit obrázek před jeho zobrazením. Vzhledem k tomu, že je to více zapojeno, než pravděpodobně potřebujete, jen zběžně přelétnu, co je potřeba udělat.
HTML pro stránku by vyvolalo další skript s libovolnými argumenty, které potřebujete:
<img src=modify.php?this=stuff&that=stuff>
Poté v modify.php
, začněte s
header('Content-type: image/jpeg');
A skončete tímto (za předpokladu, že vytváříte JPEG):
imagejpeg($im);
Uložení obrázku do souboru
Toto je preferovaný způsob, kterým to většina velkých webových stránek dělá většinu času.
Pokud váš soubor pochází z nahrání, něco takového jej přesune na lepší cestu, aniž byste se museli dotknout jpg.
$tmpfile = $_FILES['userfile']['tmp_name'];
move_uploaded_file($tmpfile, $uploadfile);
Další informace a příklady:http://php.net/manual/ cs/function.move-uploaded-file.php
V HTML jednoduše vygenerujte něco takového:
<img src=path/to/file>
Udělejte si průzkum, kam v cestě vašeho serveru můžete umístit obrázky, a ujistěte se, že máte dostatečná oprávnění.
Poznámka:Databáze se nepodílí na uchovávání obrázku, místo toho má sloupec pro uložení adresy URL "path/to/file"
:
image VARCHAR(255) NOT NULL
Pro další diskusi
- Kterou ze 3 technik byste chtěli prozkoumat hlouběji?
- Podívejme se na kód HTML, který generujete.
- Podívejme se
SHOW CREATE TABLE
.