2013-03-28 91 views
0

我有这样一段代码:PHP move_uploaded_file()不适用于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上没有尝试过,但仍然无法打开它。


编辑

任何未来这个帖子的观众的利益。

这不是一个php的move_uploaded_file()问题 - 我刚刚确认它实际上是一个SAFARI v5.1。+ BUG上的html5多重属性。很少信息here

+2

php代码被执行服务器端,我不认为这与浏览器有什么关系。你看到日志中有任何错误吗? – romainberger

+0

@romainberger是的,但它只发生在safari。我刚刚测试过它,但只有1张图片,它没有任何问题,它工作正常,但是当我再次测试它时,它重定向了多个图像。其他浏览器的一切都运行平稳。 (仍然不知道IE)错误日志说没有价值。 –

+0

您的HTML表单元素是否将'enctype'属性设置为'multipart/form-data'? – Populus

回答

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); 
} 
?> 
+0

虐待它尝试。任何更新的brb。 –

相关问题