Binary large object: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
aiutare
+ revisione (sposto esempio in discussione)
Riga 1:
{{stub informatica}}
{{da aiutare mese|motivo=stile non enciclopedico, wikificare, manca contestualizzazione|dicembre 2005}}
BLOB, [[Acronimo]]<bR><bR>
Letteralmente: grande(largo) oggetto [[binario]].<bR><bR>
In Informatica: tipo di dato, variabile e dunque campo di grande dimensione.<br>
Nei database, per esempio [[MySQL]], è un particolare tipo di campo che può contenere dati in formato binario di divesi [[gigabyte]] a seconda del [[database]] che utilizziamo. <bR>
http://it.wikipedia.org/wiki/Tipo_di_dato_(database).<bR>
In [[MySQL]] la dimensione massima di un dato blob può arrivare a 4GB.<bR>
Secondo la Operation Guide in [[Firebird]], la massima dimensione di un BLOB è 32GB.<bR>
Viene utilizzato per memorizzare su tabella immagini grafiche piuttosto che programmi applicativi scritti in altri linguaggi.<bR>
 
In [[informatica]], un '''binary large object''' (in [[lingua inglese|inglese]] ''oggetto binario di grandi dimensioni''), spesso identificato con l'acronimo '''BLOB''', è un [[tipo di dato (database)|tipo di dato]] usato nei [[database]].
<br><br>
---->> <center>Aggiungere un [[file]] [[binario]] come blob in MySQL:</center>
 
I campi di tipo BLOB sono destinati alla memorizzazione di dati di grandi dimensioni in [[formato binario]] non direttamente interpretabile dal database (ad es. immagini grafiche, audio, programmi applicativi, ecc.) e possono contenere fino a diversi [[gigabyte]] a seconda del database utilizzato.
<pre>
&lt;?
set_time_limit(120);
 
Il tipo di dato BLOB, che ha conosciuto una grande diffusione a partire da [[IBM DB2]], non è supportato da tutti i database, né presenta caratteristiche uniformi in quelli che lo supportano. Alcuni esempi:
if ($settato == "si") {
 
* in [[MySQL]] la dimensione massima di un dato blob può arrivare a 4 GB.
$db = mysql_connect(localhost,xxxxxxxxx,xxxxxxxxxx);
* in [[Firebird SQL]] la massima dimensione di un BLOB è di 32 GB.
mysql_select_db("utentidb", $db) or die(mysql_errno() . ": " . mysql_error() . "&lt;br&gt; ");
//selezioniamo il database
if (isset($fileblob) &amp;&amp; $fileblob != "none") {
$data = addslashes(fread(fopen($fileblob, "r"), filesize($fileblob)));
/*
addslashes ( string str)
La funzione restituisce una stringa con il carattere di backslah \ anteposto ai caratteri che
richiedono il quoting nelle query dei database. Questi caratteri sono: apici singoli ,
doppi apici , backslash (\) e NUL (il byte NULL).
*/
$strdescrizione = addslashes(nl2br($txtdescrizione));
$sql = "INSERT INTO blob_data (descrizione, file, filename, filesize, filetype) VALUES
('$strdescrizione', '$data', '$fileblob_name', '$fileblob_size', '$fileblob_type')";
//imposto la query
//notate l'utilizzo di _name e _size per darci automaticamente il nome e la
imensione del file in questione
$result = mysql_query($sql, $db);
//eseguo la query
echo "il file $fileblob_name di tipo $fileblob_type è stato correttamente aggiunto nel database.&lt;br&gt; &lt;br&gt; ";
echo "&lt;a href='21.blob.php'&gt; Vedi i file inserirti&lt;/a&gt; &lt;br&gt; &lt;a href='20.blob.php'&gt; Aggiungi un nuovo file&lt;/a&gt; ";
}
else
echo "Dovevi scegliere un file da inserire";
//un semplice controllo testuale
mysql_close();
 
==Voci correlate==
} else {
*[[Tipo di dato (database)|Tipo di dato]]
//esco dal php per stampare la form
*[[Database]]
?&gt;
 
&lt;HTML&gt;
&lt;BODY&gt;
&lt;FORM METHOD="post" ACTION=20.blob.php ENCTYPE="multipart/form-data"&gt;
&lt;INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" VALUE=1000000&gt;
&lt;INPUT TYPE="hidden" NAME="settato" VALUE="si"&gt;
&lt;TABLE BORDER=0&gt;
&lt;TR&gt;
&lt;TD&gt; descrizione: &lt;/TD&gt;
&lt;TD&gt; &lt;TEXTAREA NAME="txtdescrizione" ROWS=10 COLS=50&gt; &lt;/TEXTAREA&gt; &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt; File: &lt;/TD&gt;
&lt;TD&gt; &lt;INPUT TYPE="file" NAME="fileblob"&gt; &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD COLSPAN=2&gt; &lt;INPUT TYPE="submit" VALUE="Upload"&gt; &lt;/TD&gt;
&lt;/TR&gt;
&lt;/TABLE&gt;
 
&lt;/FORM&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;
&lt;?php
}
 
//chiudo il ciclo else lasciato aperto per l'html della form
 
?&gt;
 
</pre><br><br>
Nota<br>
Con: INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" VALUE="1000000'<br>
//imposto la grandezza massima dei [[file]] da uploadare<br>
 
Potrei comunque aver bisogno di aumentare le capacità di grandezza per l'[[upload]] degli [[script]] [[php]] che di [[default]] sono settati a 2[[MB]]. Per fare questo in apache mi apro il [[php.ini]] e modifico l'impostazione upload_max_filesize portandola per esempio uguale a 5 [[MB]].
Cos'è una [[query]]<br>
Cos'è una/un [[form]]
<br><br>
---->> <center>Visione dati blob in un [[DB]] [[MYSQL]]:</center>
 
<br><br>
<pre>
 
&lt;?
 
set_time_limit(120);
if ($id) {
$db = mysql_connect(localhost,xxxxxxxxx,xxxxxxxxxxxxxx);
mysql_select_db("utentidb", $db) or die(mysql_errno() . ": " . mysql_error() . "&lt;br&gt; ");
$sql = "SELECT file, filetype, filename, filesize FROM blob_data WHERE id=$id";
$result = @mysql_query($sql, $db);
$data = @mysql_result($result, "file");
$name = @mysql_result($result, 0, "filename");
$size = @mysql_result($result, 0, "filesize");
$type = @mysql_result($result, 0, "filetype");
header("Content-type: $type");
header("Content-length: $size");
header("Content-Disposition: attachment; filename=$name");
header("Content-Description: PHP Generated Data");
echo "$data";
//vedi la nota in fondo pagina
}?&gt;
&lt;center&gt; &lt;h2&gt; .21. Visione dati blob in un DB MYSQL&lt;/center&gt; &lt;/h2&gt;
 
&lt;table border=0&gt; &lt;tr&gt; &lt;td&gt;
&lt;i&gt; &lt;font color=green&gt;
Layout:&lt;/i&gt; &lt;/font&gt; &lt;br&gt; &lt;br&gt;
 
 
&lt;?
//inserisco sopra dunque la solita intestazione per le pagine del corso
set_time_limit(120);
$db = mysql_connect(localhost,xxxxxxxxx,xxxxxxxxxxx);
mysql_select_db("utentidb", $db) or die(mysql_errno() . ": " . mysql_error() . "&lt;br&gt; ");
$sql = "SELECT * FROM blob_data ";
$sql .= "ORDER BY filename ASC";
//query strutturata
$result = mysql_query($sql, $db);
$rows = mysql_num_rows($result);
//stampo la tabella per vedere i file e i contenuti relativi al blob
echo "&lt;table&gt; \n";
echo " &lt;tr&gt; \n";
echo " &lt;td&gt; &lt;b&gt; -- Nome File -- &lt;/td&gt; \n";
echo " &lt;td&gt; &lt;b&gt; -- Tipo -- &lt;/td&gt; \n";
echo " &lt;td&gt; &lt;b&gt; -- Dimensione -- &lt;/td&gt; \n";
echo " &lt;td&gt; &lt;b&gt; -- Descrizione -- &lt;/td&gt; \n";
echo " &lt;td&gt; &lt;b&gt; -- Scarica &lt;/td&gt; \n";
echo " &lt;/tr&gt; \n";
//dopo l'intestazione visualizzo i dati veri e propri
for ($i = 0; $i &lt; $rows; $i++) {
$data = mysql_fetch_object($result);
echo " &lt;tr&gt; \n";
echo " &lt;td&gt; -- $data-&gt; filename&lt;/td&gt; \n";
echo " &lt;td&gt; -- $data-&gt; filetype&lt;/td&gt; \n";
echo " &lt;td&gt; -- $data-&gt; filesize&lt;/td&gt; \n";
echo " &lt;td&gt; -- " . stripslashes($data-&gt; descrizione) . "&lt;/td&gt; \n";
echo " &lt;td&gt; --| &lt;a href='21.blob.php?id=$data-&gt; id'&gt; Download&lt;/a&gt; |&lt;/td&gt; \n";
//con id=$data-&gt; id imposto la variabile id con il contenuto di "id" del blob che mi interessa
echo " &lt;/tr&gt; \n";
}
echo "&lt;/table&gt; &lt;bR&gt; &lt;a href=20.blob.php&gt; Torna ad inserire un nuovo file&lt;/a&gt; ";
//richiamo per ulteriori inserimenti
mysql_free_result($result);
mysql_close($db);
?&gt;
</pre>
Nota<br>
Usando [[header]]("Content- bisogna stare attenti che non ci siano stringhe
vuote o di testo html all'inizio della pagina per non ricevere il tipo
d'errore: <br>
<font color="red">Warning: Cannot add header information - headers already sent by (output started at .........</font>
<bR><bR><font face=arial color=green size=3> |,-'