我有这段代码:
for($d = 0 ; $d < count($_FILES['uploadedfile']['name']) ; ++$d)
{ $imagenamecount = $d + 1;
$imagedetails = pathinfo( $_FILES['uploadedfile']['name'][$d]);
$finalpathfortempimagefile = $pathfortempimagefile."image"."$imagenamecount".".".$imagedetails['extension'];
if(!move_uploaded_file($_FILES['uploadedfile']['tmp_name'][$d], $finalpathfortempimagefile))
{
header('Location: http://localhost/stuff.php?ue=xx');
}
}
它的主要部分围绕使用move_uploaded_file()
重命名和传输多个上传的图像。我在Chrome,Firefox和Opera上没有遇到任何问题。但是当我在Safari header('Location: http://localhost/stuff.php?ue=xx');
上测试它时,它被激活了。 (尚未在IE上测试它,它没有打开。)
我在上面提供的代码之前有代码处理上传的文件(检查扩展等)但它没有问题,没有错误或其他什么。 Safari也没有文件上传表单的问题:
<form enctype="multipart/form-data" action="post.php" method="POST">
<input id="uploadInput" name="uploadedfile[]" type="file" multiple>
<input class="submit_css" type="submit" value="PREVIEW POST">
</form>
所以我认为它确实与move_uploaded_file()函数有关。有什么想法吗?
附加:
使用Safari再次测试它,但这次只有1张图片,测试成功没有错误。
再次测试,但多次上传(2和5),测试重定向失败。
在其他浏览器上尝试了两项测试,测试成功。
没有在IE上试过但仍然无法打开它。
修改
为了这篇文章的任何未来观众的利益。
这不是move_uploaded_file()的php问题 - 我刚刚确认它实际上是html5多重属性的SAFARI v5.1。+ BUG。信息很少here
答案 0 :(得分:1)
这有用吗?
<?php
$finalpath = $_SERVER['DOCUMENT_ROOT'].'/image/';
$errors = array();
foreach ($_FILES["uploadedfile"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["uploadedfile"]["tmp_name"][$key];
$name = $_FILES["uploadedfile"]["name"][$key];
if(!move_uploaded_file($tmp_name, "$finalpath.$name")){
//header('Location: /stuff.php?ue=xx');
$errors[]="Problem moving file to $finalpath.$name";
}
}
}
if(empty($errors)){
//success
} else {
print_r($errors);
}
?>