Discussione:Binary large object
Aggiungi argomentoSposto qui l'esempio d'uso in quanto non mi pare utile, sia per la lunghezza sia per la struttura piuttosto confusa, ad illustrare la voce. Lp (01:32, 15 gen 2006 (CET))
---->>
<? set_time_limit(120); if ($settato == "si") { $db = mysql_connect(localhost,xxxxxxxxx,xxxxxxxxxx); mysql_select_db("utentidb", $db) or die(mysql_errno() . ": " . mysql_error() . "<br> "); //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 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.<br> <br> "; echo "<a href='21.blob.php'> Vedi i file inserirti</a> <br> <a href='20.blob.php'> Aggiungi un nuovo file</a> "; } else echo "Dovevi scegliere un file da inserire"; //un semplice controllo testuale mysql_close(); } else { //esco dal php per stampare la form ?> <HTML> <BODY> <FORM METHOD="post" ACTION=20.blob.php ENCTYPE="multipart/form-data"> <INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" VALUE=1000000> <INPUT TYPE="hidden" NAME="settato" VALUE="si"> <TABLE BORDER=0> <TR> <TD> descrizione: </TD> <TD> <TEXTAREA NAME="txtdescrizione" ROWS=10 COLS=50> </TEXTAREA> </TD> </TR> <TR> <TD> File: </TD> <TD> <INPUT TYPE="file" NAME="fileblob"> </TD> </TR> <TR> <TD COLSPAN=2> <INPUT TYPE="submit" VALUE="Upload"> </TD> </TR> </TABLE> </FORM> </BODY> </HTML> <?php } //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
---->>
<? set_time_limit(120); if ($id) { $db = mysql_connect(localhost,xxxxxxxxx,xxxxxxxxxxxxxx); mysql_select_db("utentidb", $db) or die(mysql_errno() . ": " . mysql_error() . "<br> "); $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 }?> <center> <h2> .21. Visione dati blob in un DB MySQL</center> </h2> <table border=0> <tr> <td> <i> <font color=green> Layout:</i> </font> <br> <br> <? //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() . "<br> "); $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 "<table> \n"; echo " <tr> \n"; echo " <td> <b> -- Nome File -- </td> \n"; echo " <td> <b> -- Tipo -- </td> \n"; echo " <td> <b> -- Dimensione -- </td> \n"; echo " <td> <b> -- Descrizione -- </td> \n"; echo " <td> <b> -- Scarica </td> \n"; echo " </tr> \n"; //dopo l'intestazione visualizzo i dati veri e propri for ($i = 0; $i < $rows; $i++) { $data = mysql_fetch_object($result); echo " <tr> \n"; echo " <td> -- $data-> filename</td> \n"; echo " <td> -- $data-> filetype</td> \n"; echo " <td> -- $data-> filesize</td> \n"; echo " <td> -- " . stripslashes($data-> descrizione) . "</td> \n"; echo " <td> --| <a href='21.blob.php?id=$data-> id'> Download</a> |</td> \n"; //con id=$data-> id imposto la variabile id con il contenuto di "id" del blob che mi interessa echo " </tr> \n"; } echo "</table> <bR> <a href=20.blob.php> Torna ad inserire un nuovo file</a> "; //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 .........