我必须将大约3000个图像上传到Apache服务器上的mysql数据库中。(我知道你们中的一些人会说,在表中插入图像而不是使用url是不明智的,但我被迫这么做了)不管怎样,当我上传大约20张图片时,我的脚本运行得很好。当我尝试上传大约40张图片时,它只插入18-20张图片。如果我试图上传50多个图像,则没有插入任何图像,脚本根本无法工作。我试图在一些配置文件(如"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();
}
}
您在php的配置中检查过upload_max_filesize
和max_file_uploads
值吗?使用phpinfo()
。