Hämta bilden från användaren
Se http://php.net/manual/en/reserved.variables. files.php
och http://php.net/manual/en/features.file- upload.php
och vänner för information om hur man använder $_FILES
för att ta emot det uppladdade.
När du har bilden i en variabel, säg $jpg
, använd inga textkodnings-/avkodningsfunktioner; det kommer bara att förstöra saker. De olika tillvägagångssätten nedan kommer att säga vad du ska göra för att undvika att snubbla över 8-bitars koder.
Det finns tre sätt att presentera bilden, vart och ett är något komplext
Lagra bilden i databasen; visar bild inline
Jag har använt detta tillvägagångssätt för miniatyrer, men rekommenderar inte för stora bilder.
Förvara den i en MEDIUMBLOB
i en tabell, använd bin2hex()
i PHP för att göra bilden till en sträng. Använd sedan INSERT ... VALUES (UNHEX('...'))
för att byta tillbaka till binärt på MySQL-serversidan.
Efter att ha laddat om, låt refererande PHP säga något i stil med
$b64 = base64_encode($blob);
echo "<img src='data:image/jpeg;base64,$b64'/>";
Lagra bilden i databasen; PHP-skript för att generera bild
Jag använder detta när jag vill använda PHPs "image*"-funktioner för att modifiera bilden innan jag visar den. Eftersom detta är mer inblandat än du förmodligen behöver, kommer jag bara att skumma över vad som behöver göras.
HTML-koden för sidan skulle anropa ett annat skript, med vilka argument du än behöver:
<img src=modify.php?this=stuff&that=stuff>
Sedan i modify.php
, börja med
header('Content-type: image/jpeg');
Och avsluta med detta (förutsatt att du bygger en JPEG):
imagejpeg($im);
Lagra bilden i en fil
Detta är det bästa sättet som de flesta av de stora webbplatserna gör det mesta av tiden.
Om din fil kommer från en uppladdning flyttar något sådant här den till en bättre sökväg utan att behöva röra vid jpg.
$tmpfile = $_FILES['userfile']['tmp_name'];
move_uploaded_file($tmpfile, $uploadfile);
Mer info och exempel:http://php.net/manual/ sv/function.move-uploaded-file.php
Generera helt enkelt något så här i HTML-koden:
<img src=path/to/file>
Gör lite forskning om var i din servers väg du kan placera bilder och se till att behörigheterna är tillräckliga.
Obs:Databasen är inte involverad i att hålla bilden, istället har den en kolumn för att innehålla webbadressen "path/to/file"
:
image VARCHAR(255) NOT NULL
För ytterligare diskussion
- Vilken av de tre teknikerna skulle du vilja gräva djupare i?
- Låt oss se HTML-koden du genererar.
- Låt oss se
SHOW CREATE TABLE
.