C O N O S C E N Z A
web data management
Il nostro è un team che si occupa ormai da piu' di un decennio della risoluzione delle problematiche informatiche, in particolare ci piace poter offrire la nostra competenza in ambito telematico, dalla progettazione su misura della vostra infrastruttura web, alla realizzazione del vostro software e dei vostri portali.
MySQL

Binary large object

11/10/2005

Binary large object

 carlo scornajenghi 2005

Contributo a  Wikipedia, l'enciclopedia libera.

Versione del 15:00, 1 dic 2005 di 82.51.241.124 (discussione)
(diff) ← Versione meno recente | Versione corrente (diff) | Versione più recente → (diff)

 

BLOB, Acronimo

Letteralmente: grande(largo) oggetto binario .

In Informatica: tipo di dato, variabile e dunque campo di grande dimensione.
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.
http://it.wikipedia.org/wiki/Tipo_di_dato_(database) .
In MySQL la dimensione massima di un dato blob può arrivare a 4GB.
Secondo la Operation Guide in Firebird , la massima dimensione di un BLOB è 32GB.
Viene utilizzato per memorizzare su tabella immagini grafiche piuttosto che programmi applicativi scritti in altri linguaggi.

|,-'


Aggiungere un file binario come blob in MySQL:

 

set_time_limit(120);

if ($settato == "si") {

$db = mysql_connect(localhost,xxxxxxxxx,xxxxxxxxxx);

mysql_select_db("utentidb", $db) or die(mysql_errno() . ": " . mysql_error() . "
");

//selezioniamo il database

if (isset($fileblob) && $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 dimensione 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.

";

echo " Vedi i file inserirti
Aggiungi un nuovo file ";

}

else

echo "Dovevi scegliere un file da inserire";

//un semplice controllo testuale

mysql_close();

} else {

//esco dal php per stampare la form

?>

descrizione:
File:

}

//chiudo il ciclo else lasciato aperto per l'html della form

?>

 


 

 

Nota

Con: INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" VALUE="1000000'

//imposto la grandezza massima dei file da uploadare

Potrei comunque aver bisogno di aumentare le capacità di grandezza per l'upload degli script php che di default sono settati a 2MB. 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
Cos'è una/un form


>>

Visione dati blob in un DB MYSQL:

 


set_time_limit(120);
if ($id) {
$db = mysql_connect(localhost,xxxxxxxxx,xxxxxxxxxxxxxx);
mysql_select_db("utentidb", $db) or die(mysql_errno() . ": " . mysql_error() . "
");
$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
}?>

.21. Visione dati blob in un DB MYSQL





Layout:





//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() . "
");
$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 " \n";
echo " \n";
echo " \n";
echo " \n";
echo " \n";
echo " \n";
echo " \n";
echo " \n";
//dopo l'intestazione visualizzo i dati veri e propri
for ($i = 0; $i < $rows; $i++) {
$data = mysql_fetch_object($result);
echo " \n";
echo " \n";
echo " \n";
echo " \n";
echo " \n";
echo " \n";
//con id=$data-> id imposto la variabile id con il contenuto di "id" del blob che mi interessa
echo " \n";
}
echo "
-- Nome File -- -- Tipo -- -- Dimensione -- -- Descrizione -- -- Scarica
-- $data-> filename -- $data-> filetype -- $data-> filesize -- " . stripslashes($data-> descrizione) . " --| Download |

Torna ad inserire un nuovo file ";
//richiamo per ulteriori inserimenti
mysql_free_result($result);
mysql_close($db);


?>

Nota
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:
Warning: Cannot add header information - headers already sent by (output started at .........

|,-'