2013-07-23 3 views
2

Итак, я пытаюсь использовать fine-uploader (минимальная демонстрация jQuery) на своем веб-сайте для загрузки некоторых изображений в папку загрузки веб-сервера. Однако загрузка всегда терпит неудачу, и я понятия не имею, почему.Ошибка загрузки фотогалереи

Когда я нажимаю «загрузить файл» и выберите файл, он начинает загрузку (ProgressBar начинает заполнять), и когда он доходит до 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

Может быть хорошей идеей, чтобы проверить, если ваш каталог загрузки существует, соответствует каталог в сценарии и разрешения устанавливаются на этот каталог. –

+1

Этот каталог существует, но как проверить разрешения? и какие разрешения необходимы для загрузки в этот каталог? – DaftDev

+0

Если ваш сервер является окном, вам не нужно будет устанавливать какие-либо разрешения. Если вы работаете в Linux, вы это делаете. Вы должны иметь возможность изменять разрешения с помощью своего FTP-клиента. Вот статья о [Разрешения файла] (http://www.elated.com/articles/understanding-permissions/) Разрешения должны быть 755. –

ответ

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

Смежные вопросы