Få billedet fra brugeren
Se http://php.net/manual/en/reserved.variables. files.php
og http://php.net/manual/en/features.file- upload.php
og venner for at få oplysninger om, hvordan man bruger $_FILES
for at modtage det uploadede.
Når du har billedet i en variabel, skal du sige $jpg
, brug ikke nogen tekstindkodnings-/afkodningsfunktioner; det vil kun ødelægge tingene. De forskellige fremgangsmåder nedenfor vil sige, hvad du skal gøre for at undgå at snuble over 8-bit koder.
Der er tre måder at præsentere billedet på, hver er noget kompleks
Lagring af billedet i databasen; viser billede inline
Jeg har brugt denne tilgang til thumbnails, men anbefaler ikke til store billeder.
Gem det i en MEDIUMBLOB
i en tabel skal du bruge bin2hex()
i PHP for at gøre billedet til en streng. Brug derefter INSERT ... VALUES (UNHEX('...'))
for at skifte tilbage til binær på MySQL-serversiden.
Efter genindlæsning skal du få det refererende PHP til at sige noget i stil med
$b64 = base64_encode($blob);
echo "<img src='data:image/jpeg;base64,$b64'/>";
Lagring af billedet i databasen; PHP script til at generere billede
Jeg bruger dette, når jeg vil bruge PHP's "image*" funktioner til at ændre billedet, før det vises. Da dette er mere involveret, end du sandsynligvis har brug for, vil jeg kun skimme over, hvad der skal gøres.
Sidens html ville fremkalde et andet script, med hvilke argumenter du har brug for:
<img src=modify.php?this=stuff&that=stuff>
Derefter i modify.php
, start med
header('Content-type: image/jpeg');
Og slut med dette (forudsat at du bygger en JPEG):
imagejpeg($im);
Lagring af billedet i en fil
Dette er den foretrukne måde, hvorpå de fleste af de store websteder gør det det meste af tiden.
Hvis din fil kommer fra en upload, flytter noget som dette den til en bedre sti uden at skulle røre ved jpg.
$tmpfile = $_FILES['userfile']['tmp_name'];
move_uploaded_file($tmpfile, $uploadfile);
Mere info og eksempler:http://php.net/manual/ da/function.move-uploaded-file.php
I HTML skal du blot generere noget som dette:
<img src=path/to/file>
Undersøg, hvor i din servers vej du kan placere billeder, og sørg for, at tilladelserne er tilstrækkelige.
Bemærk:Databasen er ikke involveret i at holde billedet, i stedet har den en kolonne til at indeholde url'en "path/to/file"
:
image VARCHAR(255) NOT NULL
For yderligere diskussion
- Hvilken af de 3 teknikker vil du gerne grave dybere ned i?
- Lad os se den HTML, du genererer.
- Lad os se
SHOW CREATE TABLE
.