在Apache服务器上将多个映像上传到mysql数据库

时间:2013-09-01 09:05:10

标签: php mysql database apache file-upload

我必须在Apache服务器上将大约3000张图像上传到mysql数据库中。 (我知道有些人会说将图像插入表而不是使用url是不明智的,但我被迫这样做) 无论如何,当我上传大约20张图片时,我的脚本运行良好。当我尝试上传大约40张图像时,它只插入18-20张图像。如果我尝试上传50多张图片,则不会插入任何图片且脚本根本无法正常工作。 我试图在一些配置文件中增加“max”上传/导入/会话/查询值,例如“php.ini”,“conf”等,但我认为我错过了正确的修复。

有人能指点我吗?

我的源代码:

HTML:

<form action="" method="POST" enctype="multipart/form-data">
   <input type="file" name="userfile[]" multiple/>
   <input type="submit" value="Submit"/>
 </form>

PHP:     

if(!isset($_FILES['userfile']))
{
    echo '<p>Please select a file</p>';
}
else
{
    try    {
        upload();
        echo '<p>Thank you for submitting</p>';
    }
    catch(Exception $e)
    {
        echo '<h4>'.$e->getMessage().'</h4>';
    }
}


function upload(){

        foreach($_FILES['userfile']['tmp_name'] as $key => $tmp_name ){


            $imgfp = fopen($_FILES['userfile']['tmp_name'][$key], 'rb');


            $nameTemp = $_FILES['userfile']['name'][$key];

            $name = preg_replace( '/\.[a-z0-9]+$/i' , '' , $nameTemp );

            /*** connect to db ***/
            $dbh = new PDO("mysql:host=localhost;dbname=testYossi", 'root', 'password');

            /*** set the error mode ***/
            $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

            /*** our sql query ***/
            $stmt = $dbh->prepare("INSERT INTO pictures (picNmae , picData) VALUES (? ,?)");

            $stmt->bindParam(1, $name);
            $stmt->bindParam(2, $imgfp, PDO::PARAM_LOB);

            $stmt->execute();       
    }               
}

1 个答案:

答案 0 :(得分:1)

您是否在php的配置中检查了upload_max_filesizemax_file_uploads值?使用phpinfo()