2010-05-18 13 views
6

c'è un modo per inserire foto (non url, la foto) in una tabella MYSQL fatta con phpmyadmin? e se c'è quando voglio ottenere quella foto e inserirla nella pagina, cosa dovrei fare? :)Posso inserire un'immagine in una tabella DB MYSQL?

+1

uso tipo BLOB, si inserire l'immagine come 0 e 1 di – Karthik

+1

e assicurarsi di salvare (e rispondi) con mime-tipi appropriati corrispondenti a quelli degli 0 e degli 1 ... – aioobe

risposta

7

È possibile (utilizzando il tipo BLOB) ma è quasi sempre preferibile archiviare l'immagine nel file system e archiviare semplicemente il percorso dell'immagine nel database.

alcuni motivi per cui la parte superiore della mia testa:

  1. BLOB saranno palloncino la dimensione del database, fare backup e ripristino potenzialmente più difficile (anche se alcuni potrebbero sostenere che essa rende più facile dal momento che è sufficiente eseguire il backup del database anziché del database più un mucchio di file).

  2. La memorizzazione dei dati come BLOB può causare problemi di prestazioni se si dispone di un codice pigro che utilizza select *.

  3. L'elaborazione delle immagini dal filesystem sarà più veloce di quella che serve dal database e ridurrà il carico sul server db.

  4. Si ottiene una certa flessibilità con la posizione in cui vengono pubblicate le immagini, ad esempio se si desidera spostarle in un CDN in futuro.

0

Se sarete recuperano l'immagine, spesso, si sarebbe probabilmente meglio a memorizzare in un file e salvare il percorso ad esso, per risparmiare una corsa database sul recupero dell'immagine.

Altrimenti, memorizzare il contenuto del file immagine in una colonna BLOB, quindi stampare <img src="image.php?id=1234" /> nel codice HTML.

image.php deve cercare l'immagine con ID 1234 nel database, recuperare il contenuto di tale colonna BLOB e stamparlo dopo aver servito l'intestazione HTTP corretta, ad es. header('Content-type: image/gif');

Ma seriamente. Basta salvare il file immagine. È molto meno un dolore, lo prometto.

0

Quando si tratta di risorse statiche come immagini di sfondo o icone di menu, non ho mai visto nessuno archiviarli nel database. Per contenuti dinamici come le immagini caricate dagli utenti, non è così raro.

Ecco alcuni pro e contro di memorizzazione delle immagini nel database.

Vantaggi:

  • E 'tecnicamente non è diverso da altri dati. Solo di più, e in formato binario.
  • Le immagini vengono salvate insieme al resto del database.
  • Nessun mal di testa di ottenere fuori sincrono (con un percorso nel database che punta a un'immagine inesistente, o le immagini senza riferimenti nel database)

Svantaggi:

  • Memorizzazione i singoli file sono esattamente ciò a cui è orientato il file system, quindi molto probabilmente scalerà meglio.
  • Più facile per eseguire manualmente il debug/visualizzare le immagini
  • Il server Web può servire direttamente le immagini (non è necessario un codice aggiuntivo per caricare il contenuto dal database e servire il tipo mime corretto, ecc.).

Personalmente ho sempre trovato che i vantaggi superano gli svantaggi e sempre le immagini (insieme ai tipi mime) nel database. Non ho mai notato alcun inconveniente o problema di prestazioni, ma d'altra parte non ho mai lavorato su siti web di grandi dimensioni.

questioni connesse e risorse:

Problemi correlati