sql >> Databasteknik >  >> RDS >> Mysql

Ladda upp bild i MYSQL-databasen och visa den med PHP med Swift

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 .


  1. Fix:"BACKUP LOG kan inte utföras eftersom det inte finns någon aktuell databassäkerhetskopiering." i SQL Server/SQL Edge

  2. 5 mycket vanliga SQL-frågor design misstag att undvika till varje pris

  3. Tomma utrymmen i kolumnnamn med MySQL

  4. SQL Server Process Queue Race Condition