2013-03-28 124 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。 –

相關問題