PHP move_uploaded_file()无法使用safari?

时间:2013-03-28 17:26:47

标签: php safari

我有这段代码:

  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

1 个答案:

答案 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);
}
?>