ajax uploader(使用nginx)

问题描述 投票:1回答:1

我有一个多文件上传(图像)脚本,带有ajax XMLHttpRequest。我正在移动浏览器上测试,因为它们会被使用。问题是,当上传10-12个图像时,chrome会停止并出现错误:

第1行的PHP $ _FILES [“file1”] ..未定义...

但在Chrome上我可以上传5张图片。 Mozilla没有那么多(最多:1)。在PC上,情况完全不同。 Chrome上传的内容更多,没有错误。我在家里的nginx web服务器上运行代码。这可能是由于缺少某些配置设置造成的吗?

什么会导致这样的错误?我不明白这些操作。请帮我!

HTML代码

<form method="post" id="upload_form" enctypee="multipart/form-data">
    <input type="file" name="file1[]" id="file1" multiple><br>
    <input type="button" value="Upload File" onclick="uploadFile()">
    <progress id="progressBar" value="0" max="100" style="width:300px;"></progress>
    <h3 id="status"></h3>
    <p id="loaded_n_total"></p>
</form>

JS

function _(el) {
  return document.getElementById(el);
}

function uploadFile() {

  var len = document.getElementById("file1").files.length;
  console.log(len);
  var formdata = new FormData();

  for (var i = 0; i < len; i++) {
    formdata.append("file1[]", document.getElementById('file1').files[i]);
  }

  var ajax = new XMLHttpRequest();
  ajax.upload.addEventListener("progress", progressHandler, false);
  ajax.addEventListener("load", completeHandler, false);
  ajax.addEventListener("error", errorHandler, false);
  ajax.addEventListener("abort", abortHandler, false);
  ajax.open("POST", "file_upload_parser.php");
  ajax.send(formdata);
}

function progressHandler(event) {
  _("loaded_n_total").innerHTML = "Uploaded " + event.loaded + " bytes of " + event.total;
  var percent = (event.loaded / event.total) * 100;
  _("progressBar").value = Math.round(percent);
  _("status").innerHTML = Math.round(percent) + "% uploaded... please wait";
}

function completeHandler(event) {
  _("status").innerHTML = event.target.responseText;
  _("progressBar").value = 0;
}

function errorHandler(event) {
  _("status").innerHTML = "Upload Failed";
}

function abortHandler(event) {
  _("status").innerHTML = "Upload Aborted";
}

PHP

$lengthFile = count($_FILES["file1"]["name"]);
for($i=0; $i<$lengthFile; $i++)
{
    $fileName = $_FILES["file1"]["name"][$i]; 
    $fileTmpLoc = $_FILES["file1"]["tmp_name"][$i];
    $fileType = $_FILES["file1"]["type"][$i]; 
    $fileSize = $_FILES["file1"]["size"][$i];
    $fileErrorMsg = $_FILES["file1"]["error"][$i]; 

    echo $fileName ."<br>";

    if (!$fileTmpLoc) { 
        echo "ERROR: Please browse for a file before clicking the upload button.";
        exit();
    }
    if(move_uploaded_file($fileTmpLoc, "test_uploads/$fileName")){
        echo "$fileName upload is complete";
    } else {
        echo "move_uploaded_file function failed";
    }
}
javascript php jquery ajax nginx
1个回答
-1
投票

尝试修复表单标记中的拼写错误 - “enctype”而不是“enctype”

© www.soinside.com 2019 - 2024. All rights reserved.