Voor mijn site ben ik bezig met PHP/MySQL.
Op mijn site wil ik een paar bestanden aanbieden. Ik heb ervoor gekozen om deze bestanden in de database op te slaan, zodat niet iedereen deze bestanden kan downloaden. Alleen geregistreerde users mogen deze bestanden downloaden.
Om deze bestanden op slaan in de MySQL database gebruik ik het volgende script:
Met dit script(heb ik van www.phpbuilder.com) lukt het mij om bestanden in de database te zetten. Echter bij grote bestanden van +20MB klapt het script eruit en wordt de pagina opnieuw geladen, er is dan niks in de database opgeslagen.
De kolom waar de BLOB-file is van het type LONGBLOB en zou dus in principe om moeten kunnen gaan met de grootte van deze bestanden.
Ik heb het PHP.INI-bestand aangepast, zodat het bestanden aankan tot 50MB (memory_limit, post_max_size en upload_max_filesize).
Ook MY.CNF heb ik aangepast (max_allowed_packet=50M).
Ik doe het nog allemaal in een test-omgeving op een NT4-bak met Apache 1.3.24, PHP 4.1.2 en MySQL 3.23.49.
Ik heb het helaas nog niet in een live-omgeving kunnen testen, omdat de live-omgeving nog niet is opgezet.
Kan PHP dan niet met bestanden omgaan groter dan 25MB of ligt het ergens aan MySQL.
Als dit niet kan, is er dan een manier om de bestanden veilig op te slaan op de webserver, zodat een niet-geregistreerde niet zomaar een bestand kan downloaden? Ik wil het niet met .htaccess doen, omdat ik de gebruikers wil laten inloggen via MySQL.
Op mijn site wil ik een paar bestanden aanbieden. Ik heb ervoor gekozen om deze bestanden in de database op te slaan, zodat niet iedereen deze bestanden kan downloaden. Alleen geregistreerde users mogen deze bestanden downloaden.
Om deze bestanden op slaan in de MySQL database gebruik ik het volgende script:
PHP:
1
| <? session_start(); if ($Login == '*****') {// store.php3 - by Florian Dittmer <dittmer@gmx.net>// Example php script to demonstrate the storing of binary files into// an sql database. More information can be found at http://www.phpbuilder.com/?><HTML><HEAD> <TITLE>Bestanden in de database opslaan</TITLE></HEAD><BODY><?php// code that will be executed if the form has been submitted:if ($submit) { include "config.inc.php"; $data = addslashes(fread(fopen($form_data, "r"), filesize($form_data))); $result=MYSQL_QUERY("INSERT INTO binary_data (description,bin_data,filename,filesize,filetype) ". "VALUES ('$form_description','$data','$form_data_name','$form_data_size','$form_data_type')"); $id= mysql_insert_id(); print "<p>Het geuploade bestand heeft de volgende ID: <b>$id</b><P><A HREF=\"admin.php\">Terug naar de beginpagina</A></P>"; MYSQL_CLOSE();} else { // else show the form to submit new data:?> <form method="post" action="upload.php" enctype="multipart/form-data"> beschrijving:<br> <input type="text" name="form_description" size="40"> <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="50000000"> <p>Bestand om in de database te zetten:<br> <input type="file" name="form_data" size="40"> <p><input type="submit" name="submit" value="submit"> </form><?php}?></BODY></HTML><?php } else { include "error.php"; }?> |
Met dit script(heb ik van www.phpbuilder.com) lukt het mij om bestanden in de database te zetten. Echter bij grote bestanden van +20MB klapt het script eruit en wordt de pagina opnieuw geladen, er is dan niks in de database opgeslagen.
De kolom waar de BLOB-file is van het type LONGBLOB en zou dus in principe om moeten kunnen gaan met de grootte van deze bestanden.
Ik heb het PHP.INI-bestand aangepast, zodat het bestanden aankan tot 50MB (memory_limit, post_max_size en upload_max_filesize).
Ook MY.CNF heb ik aangepast (max_allowed_packet=50M).
Ik doe het nog allemaal in een test-omgeving op een NT4-bak met Apache 1.3.24, PHP 4.1.2 en MySQL 3.23.49.
Ik heb het helaas nog niet in een live-omgeving kunnen testen, omdat de live-omgeving nog niet is opgezet.
Kan PHP dan niet met bestanden omgaan groter dan 25MB of ligt het ergens aan MySQL.
Als dit niet kan, is er dan een manier om de bestanden veilig op te slaan op de webserver, zodat een niet-geregistreerde niet zomaar een bestand kan downloaden? Ik wil het niet met .htaccess doen, omdat ik de gebruikers wil laten inloggen via MySQL.
-