Innanzitutto poniamoci una domanda: è possibile allocare immagini sotto forma di informazioni all'interno di un database? Naturalmente è possibile; nello stesso modo sarà possibile gestire queste informazioni, modificarle ed estrarle utilizzando gli stessi comandi SQL che normalmente vengono impiegati per l'amministrazione di stringhe ed interi.
Potremo quindi usare il comando INSERT per l'archiviazione delle immagini, SELECT per la loro estrazione e così via; PHP costituirà un'interfaccia ideale per automatizzare tutti i processi di amministrazione delle immagini conservate all'interno di un database, che nel nostro caso sarà un archivio creato tramite il DBMS MySQL.
Ma quali sono i vantaggi nel preferire l'allocazione delle immagini in tabelle piuttosto che in semplici cartelle salvate nella root del Web server? Vediamone alcuni:
- sarà possibile salvare in ogni momento i nostri dati tramite una semplice esportazione (Dump) delle tabelle; è certamente molto più semplice, veloce e sicuro un singolo comando di esportazione tramite Shell o PhpMyAdmin, piuttosto che il download via FTP di centinaia di file sparsi nel nostro spazio web;
- non sarà più possibile accedere direttamente alle immagini tramite URL, con indubbi vantaggi relativi alla sicurezza dei dati.
- non si avranno più problemi relativi ai percorsi di accesso alle immagini, queste infatti si troveranno all'interno di un database raggiungibile attraverso la medesima procedura da una qualsiasi pagina indipendentemente dalla sua posizione;
- non sarà più necessario settare permessi sulle cartelle, questo diminuirà l'esigenza di accedere al nostro spazio tramite FTP con conseguente risparmio di tempo.
Naturalmente non dovremo ignorare alcuni possibili svantaggi di questa metodologia, li esporremo in modo che il lettore possa valutare quale sistema preferire tra la classica allocazione delle immagini in cartelle e quella in tabelle:
- l'archiviazione di file nel database può comportare dei rischi di insuccesso nell'INSERT e nella SELECT delle informazioni per documenti di grandi dimensioni;
- sarà possibile accedere alle nostre immagini soltanto tramite comandi SQL;
- le immagini mediamente "pesano" molto più dei testi e i nostri database diverranno in poco tempo molto ampi.
Detto questo, passiamo alla creazione di una tabella progettata per la gestione delle immagini:
$sql = 'CREATE TABLE `immagini` ('
. ' `id` int(11) NOT NULL auto_increment,'
. ' `nome` varchar(50) NOT NULL default "",'
. ' `size` varchar(25) NOT NULL default "",'
. ' `type` varchar(25) NOT NULL default "",'
. ' `immagine` blob NOT NULL,'
. ' PRIMARY KEY (`id`)'
. ' )';
Il campo destinato all'allocazione delle immagini sarà quello caratterizzato dal tipo di dato
BLOB (
Binary
Large
Object) specificamente dedicato al trattamento di questa tipologia di informazioni.
Attenzione: questo articolo è stato concesso in esclusiva per la pubblicazione a
Mrwebmaster.it; ne è vietata la riproduzione,
anche parziale, senza l'esplicito consenso dell'autore e della redazione di
Mrwebmaster.it.