sql >> Database teknologi >  >> RDS >> Mysql

Upload billede i MYSQL-databasen og vis det ved hjælp af PHP med Swift

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 .


  1. importere fjerndatabase til localhost

  2. SQL select where not i underforespørgsel returnerer ingen resultater

  3. Java, hvordan ændres nuværende database til en anden?

  4. lagrede procedurer udført gennem jdbc