2013-07-23 69 views
2

所以我想在我的網站上使用fine-uploader(最小的jQuery演示)上傳一些圖片到web服務器上傳文件夾。然而,上傳總是失敗,我不知道爲什麼。Fine-uploader上傳錯誤

當我點擊「上傳文件」,然後選擇一個文件時,它開始上傳(進度開始填充),當它到達100%它說「上傳失敗」,並給出了檢查元素此錯誤: "Upload failed" error (Bigger size image)

這裏是upload.html:

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="utf-8"> 
    <title>Fine Uploader - jQuery Wrapper Minimal Demo</title> 
    <link href="css/fineuploader-3.6.3.css" rel="stylesheet"> 
    </head> 
    <body> 
    <div id="fine-uploader"></div> 

    <script src="http://code.jquery.com/jquery-latest.js"></script> 
    <script src="js/jquery.fineuploader-3.6.3.js"></script> 
    <script> 
     function createUploader() { 
     var uploader = new qq.FineUploader({ 
      element: document.getElementById('fine-uploader'), 
      request: { 
      endpoint: 'upload_file.php' 
      } 
     }); 
     } 

     window.onload = createUploader; 
    </script> 
    </body> 
</html> 

而且upload_file.php:

<?php 
for($i=0; $i<count($_FILES['file']['type']); $i++) { 
$allowedExts = array("gif", "jpeg", "jpg", "png"); 
$temp = explode(".", $_FILES["file"]["name"][$i]); 
$extension = end($temp); 
if ((($_FILES["file"]["type"][$i] == "image/gif") 
|| ($_FILES["file"]["type"][$i] == "image/jpeg") 
|| ($_FILES["file"]["type"][$i] == "image/jpg") 
|| ($_FILES["file"]["type"][$i] == "image/pjpeg") 
|| ($_FILES["file"]["type"][$i] == "image/x-png") 
|| ($_FILES["file"]["type"][$i] == "image/png")) 
&& ($_FILES["file"]["size"][$i] < 50000000) 
&& in_array($extension, $allowedExts)) 
    { 
    if ($_FILES["file"]["error"][$i] > 0) 
    { 
    echo "Return Code: " . $_FILES["file"]["error"][$i] . "<br>"; 
    } 
    else 
    { 
    echo "Upload: " . $_FILES["file"]["name"][$i] . "<br>"; 
    echo "Type: " . $_FILES["file"]["type"][$i] . "<br>"; 
    echo "Size: " . ($_FILES["file"]["size"][$i]/1024) . " kB<br>"; 
    echo "Temp file: " . $_FILES["file"]["tmp_name"][$i] . "<br>"; 

    if (file_exists("upload\\" . $_FILES["file"]["name"][$i])) 
     { 
     echo $_FILES["file"]["name"][$i] . " already exists. "; 
     } 
    else 
     { 
     move_uploaded_file($_FILES["file"]["tmp_name"][$i], 
     "\\upload\\" . $_FILES["file"]["name"][$i]); 
     echo "Stored in: " . "upload\\" . $_FILES["file"]["name"][$i]; 
     } 
    } 
    } 
else 
    { 
    echo "Invalid file"; 
    } 
} 

?> 
+0

可能是一個好主意,檢查你的上傳目錄存在,目錄中的腳本匹配和權限在該目錄設置。 – 2013-07-23 13:15:23

+1

該目錄存在但我如何檢查權限?並且需要哪些權限才能夠上傳到該目錄? – DaftDev

+0

如果你的服務器是windows,你不需要設置任何權限。如果你在Linux上,你可以。您應該可以使用您的FTP客戶端更改權限。這裏是關於[文件權限](http://www.elated.com/articles/understanding-permissions/)的文章。權限應該是755. – 2013-07-23 13:34:19

回答

2

您沒有返回有效的JSON響應。一個簡單的方法可以使用json_encode

將當前的回顯行放入數組中,並在使用json_encode後回顯該數組,以獲得有效的JSON響應。

0
<?php 

    $allowedExts = array("gif", "jpeg", "jpg", "png"); 
    $temp = explode(".", $_FILES["qqfile"]["name"]); 
    $extension = end($temp); 

    /** 
    * This is just additional 
    * 
    */ 

    $folder = dirname(__FILE__) ."/testuploads"; 

    if(!is_dir($folder)) 
    { 
     @mkdir($folder , 777); 
    } 



    /** 
    * I remove the for loop since we are expecting a single file. 
    * The uploader supports multi uploads but what it exactly does is sending multiple request. See in the firebug. 
    * 1 request per file. 
    */ 
    if ((($_FILES["qqfile"]["type"] == "image/gif") 
    || ($_FILES["qqfile"]["type"] == "image/jpeg") 
    || ($_FILES["qqfile"]["type"] == "image/jpg") 
    || ($_FILES["qqfile"]["type"] == "image/pjpeg") 
    || ($_FILES["qqfile"]["type"] == "image/x-png") 
    || ($_FILES["qqfile"]["type"] == "image/png")) 
    && ($_FILES["qqfile"]["size"] < 50000000) 
    && in_array($extension, $allowedExts)) 
     { 
     if ($_FILES["qqfile"]["error"] > 0) 
     { 
      $msg['return_code'] = "Return Code: " . $_FILES["qqfile"]["error"] . "<br>"; 

     } 
     else 
     { 
     /* 
     * I put the extra messages into array so we can display it later in json format. 
     */ 
     $msg['upload'] = "Upload: " . $_FILES["qqfile"]["name"] . "<br>"; 
     $msg['type'] = "Type: " . $_FILES["qqfile"]["type"] . "<br>"; 
     $msg['size'] = "Size: " . ($_FILES["qqfile"]["size"]/1024) . " kB<br>"; 
     $msg['temp_file'] = "Temp file: " . $_FILES["qqfile"]["tmp_name"] . "<br>"; 




     if($_FILES["qqfile"]["name"] <> "") 
     if (file_exists($folder."/" . $_FILES["qqfile"]["name"])) 
      { 
      $msg['error_msg'] = $_FILES["qqfile"]["name"] . " already exists. "; 

      } 
     else 
      { 

      move_uploaded_file($_FILES["qqfile"]["tmp_name"], 
      $folder."/" . $_FILES["qqfile"]["name"]); 
     $msg['success_msg'] = "Stored in: " .$folder."/" . $_FILES["qqfile"]["name"]; 
     /** 
     * Since we get here we have to tell your handler that the process is success 
     */ 
     $msg['success'] = "true"; 
      } 
     } 
     } 
    else 
     { 
     $msg['error_msg'] = "Invalid file"; 
     $msg['success'] = "false"; 
     } 
    /** 
    * Display the result in json format. 
    */ 
    print json_encode($msg); 
?> 

第一件事是從循環中刪除它。即使它支持多上傳,它只能發送1個文件。看到火蟲。然後我使用文件夾的絕對路徑,然後將響應轉換爲JSON格式。上面提供的代碼有意見。

+0

請爲您的帖子/代碼提供一些解釋。 –

+0

謝謝Ray Nicholus,我只是不小心碰到了輸入。 =) – ROMMEL