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

Carica l'immagine nel database MySQL e visualizzala utilizzando PHP con Swift

Ottenere l'immagine dall'utente

Vedi http://php.net/manual/en/reserved.variables. files.php e http://php.net/manual/en/features.file- carica.php e amici per i dettagli su come usare $_FILES per ricevere il caricato.

Una volta che hai l'immagine in una variabile, pronuncia $jpg , non utilizzare alcuna funzione di codifica/decodifica del testo; si limiterà a storpiare le cose. I diversi approcci seguenti indicheranno cosa fare per evitare di inciampare su codici a 8 bit.

Esistono tre modi per presentare l'immagine, ciascuno alquanto complesso

Memorizzazione dell'immagine nel database; mostrando l'immagine in linea

Ho usato questo approccio per le miniature, ma non lo consiglio per le immagini di grandi dimensioni.

Conservalo in un MEDIUMBLOB in una tabella, usa bin2hex() in PHP per trasformare l'immagine in una stringa. Quindi usa INSERT ... VALUES (UNHEX('...')) per tornare al binario sul lato server MySQL.

Dopo aver ricaricato, chiedi al PHP di riferimento di dire qualcosa del tipo

$b64 = base64_encode($blob);
echo "<img src='data:image/jpeg;base64,$b64'/>";

Memorizzazione dell'immagine nel database; Script PHP per generare immagini

Lo uso quando voglio usare le funzioni "image*" di PHP per modificare l'immagine prima di visualizzarla. Dal momento che questo è più complicato di quanto probabilmente serva, esaminerò solo ciò che deve essere fatto.

L'html per la pagina invocherebbe un altro script, con tutti gli argomenti di cui hai bisogno:

<img src=modify.php?this=stuff&that=stuff>

Quindi in modify.php , inizia con

header('Content-type: image/jpeg');

E finisci con questo (supponendo che tu stia costruendo un JPEG):

imagejpeg($im);

Memorizzare l'immagine in un file

Questo è il modo preferito in cui la maggior parte dei grandi siti web lo fa per la maggior parte del tempo.

Se il tuo file proviene da un caricamento, qualcosa del genere lo sposta in un percorso migliore senza dover toccare il jpg.

$tmpfile = $_FILES['userfile']['tmp_name'];
move_uploaded_file($tmpfile, $uploadfile);

Maggiori informazioni ed esempi:http://php.net/manual/ it/function.move-uploaded-file.php

Nell'HTML, genera semplicemente qualcosa come questo:

<img src=path/to/file>

Fai qualche ricerca su dove puoi inserire le immagini nel percorso del tuo server e assicurati che le autorizzazioni siano adeguate.

Nota:il database non è coinvolto nella conservazione dell'immagine, ma ha una colonna per contenere l'URL "path/to/file" :

image VARCHAR(255) NOT NULL

Per ulteriori discussioni

  • In quale delle 3 tecniche vorresti approfondire?
  • Vediamo l'HTML che stai generando.
  • Vediamo SHOW CREATE TABLE .