【问题标题】:Fine-uploader uploading errorFine-uploader上传错误
【发布时间】:2013-07-22 06:09:15
【问题描述】:

所以我尝试在我的网站中使用fine-uploader(Minimal jQuery Demo) 将一些图片上传到网络服务器的上传文件夹。但是上传总是失败,我不知道为什么。

当我单击“上传文件”并选择一个文件时,它开始上传(进度条开始填充),当它达到 100% 时,它显示“上传失败”并在检查元素中给出此错误: (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";
  }
}

?>

【问题讨论】:

  • 检查您的上传目录是否存在、是否与脚本中的目录匹配以及在该目录上设置了权限可能是个好主意。
  • 目录存在但如何查看权限?以及需要哪些权限才能上传到该目录?
  • 如果你的服务器是windows你不需要设置任何权限。如果你在 Linux 上,你可以。您应该能够使用 FTP 客户端更改权限。这是一篇关于File Permissions的文章,权限应该是755。
  • 谢谢,我去看看
  • 为什么在马特的建议之后没有报告就添加赏金?您的上传被列为失败,因为您的服务器未返回有效的 JSON 响应。你的服务器有问题。你检查了什么?

标签: php jquery html file-upload fine-uploader


【解决方案1】:

您没有返回有效的 JSON 响应。一个简单的方法是使用json_encode

将您当前的回显线放入一个数组中,并在使用json_encode 后回显该数组,以获得有效的 JSON 响应。

【讨论】:

    【解决方案2】:
    <?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 格式。上面提供的代码有 cmets。

    【讨论】:

    • 感谢 Ray Nicholus,我只是不小心按了回车键。 =)
    【解决方案3】:

    尝试将您的权限设置为 777

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-30
      • 1970-01-01
      • 2018-01-02
      • 1970-01-01
      • 2014-07-05
      • 2014-07-10
      • 1970-01-01
      相关资源
      最近更新 更多