我正在尝试设置多图像上传器,每当我尝试上传超过20个文件时,只会上传前20个文件。
在继续之前,id就像是说php.ini中的max_file_uploads设置为400,所以其他非常相似问题的答案似乎无法解决我的问题。
我的完整代码如下,请注意我知道我使用的是mysql_query,但这仅用于本地测试目的。
-
PHP
if(isset($_POST['upload'])){
include("SimpleImage.php");
echo count($_FILES['file']['name']);
for($i=0; $i<count($_FILES['file']['name']); $i++) {
$allowedExts = array("gif", "jpeg", "jpg", "png", "JPG");
$extension = end(explode(".", $_FILES["file"]["name"][$i]));
date_default_timezone_set('Europe/London');
$date = date_create();
if ((($_FILES["file"]["type"][$i] == "image/gif")
|| ($_FILES["file"]["type"][$i] == "image/jpeg")
|| ($_FILES["file"]["type"][$i] == "image/jpg")
|| ($_FILES["file"]["type"][$i] == "image/png"))
&& ($_FILES["file"]["size"][$i] < 10485760)
&& in_array($extension, $allowedExts)){
$name = date_timestamp_get($date) . "_" . mt_rand() . "." . $extension;
if ($_FILES["file"]["error"][$key] > 0){
$messages[] = "Return Code: " . $_FILES["file"]["error"][$i] . "<br>";
}else{
$imagethumbTrueLocation = "../../gallery/thumb/" . $name;
$imagelargeTrueLocation = "../../gallery/photos/" . $name;
$imagethumb = new SimpleImage();
$imagethumb->load($_FILES["file"]["tmp_name"][$i]);
$imagethumb->resizeToWidth(230);
$imagethumb->save($imagethumbTrueLocation);
$imagethumblocation = "thumb/" . $name;
$imagelarge = new SimpleImage();
$imagelarge->load($_FILES["file"]["tmp_name"][$i]);
$imagelarge->resizeToWidth(800);
$imagelarge->save($imagelargeTrueLocation);
$imagelargelocation = "photos/" . $name;
$queryresult = mysql_query("INSERT INTO gallery (thumbnail, highres) VALUES ('$imagethumblocation', '$imagelargelocation')") or die(mysql_error());
if(!$queryresult) {
$messages[] = "Failed to insert record into the database.";
}else{
$messages[] = "Record sucessfully added to the database.";
}
}
}else{
$messages[] = "Invalid file";
}
}
}
HTML
<form action="#" method="post" enctype="multipart/form-data">
<input type="file" name="file[]" id="file" multiple>
<input type="submit" name="upload" value="Upload" />
</form>
答案 0 :(得分:1)
我知道你提到了max_file_uploads,但可能是400不被认可的尝试99吗?我说这个的唯一原因是它特定的数字20!每次都必须有限制。你也检查过apache配置,那里也可能有限制
我个人会用javascript来解决这些问题,所以每次上传都有自己的主题可以说,如果有的话,你可以绕过限制。
答案 1 :(得分:0)
原来我的主机已经设置了自己的限制,这意味着只有VPS和专用帐户才能更改此值:(
答案 2 :(得分:0)
如果您正在使用Wamp,请转到localhost页面,然后单击phpinfo();在左下角。 如果没有,你可以在php文件中使用该功能。
你会看到:“Loaded Configuration File”列,找到你的php.ini
因为有多个php.ini(一个在php文件夹中,另一个在apach文件夹中)。 完成后,您可以再次在phpinfo()中验证它,只需按CTRL + F并查找“max_file_uploads”。
希望它会有所帮助。
答案 3 :(得分:0)
打开php.ini配置文件并更改 ;可通过单个请求上传的最大文件数 max_file_uploads = 到你希望apache在POST事件上处理的文件数量。 默认值为20.