formdata只发送第一个名字object

Formdata send only the name of the first object

我尝试异步上传文件,但遇到无法解决的问题。 我有一个没有表单元素的输入字段,它包含原始数据和文件。当我尝试上传时,我猜第一个表单数据文件 object 在服务器端失败了。 $_FILES 变量仅包含第一个文件的名称,但在第一个文件之后一切正常。 Html:

<input class="form-control fileInput" id="applInputIdentityFile" type="file" accept=".pdf,.jpg,.png,.gif" style="display: none">

JS:

$('.fileInput').on('change',function(){
    applToSend.arrayToSend = new FormData();
    $('.fileInput').each(function(){
      var fileName = $(this).val().replace(/^.*\/, "");
      if(fileName){
        $("#" + $(this).attr("id") + "Name").html(fileName);
        $(this)[0].files[0].descr = $(this).attr("id");
        applToSend.arrayToSend.append($(this).attr("id"), $(this)[0].files[0]);
      }
    });
  });

前端 object 包含正确的值,ajax header 对我来说似乎很好:

------WebKitFormBoundaryDcqJbGjmdx2dg3q6
Content-Disposition: form-data; name="applInputIdentityFile"; filename="20200430_115117.jpg"
Content-Type: image/jpeg


------WebKitFormBoundaryDcqJbGjmdx2dg3q6
Content-Disposition: form-data; name="applInputProdCertFile"; filename="20200430_115117_resized.jpg"
Content-Type: image/jpeg

Ajax本身:

    $.ajax({
      url: '/application/addAppl',
      type: 'POST',
      data: applToSend.arrayToSend,
      timeout: 30000,
      processData: false,
      contentType: false,
      cache: false,
      enctype: 'multipart/form-data',
    })

但是第一个文件总是失败,无论我尝试上传多少文件或使用哪个输入、哪个文件、哪个扩展名。 服务器端只有这几行,其他都注释掉了(我用的是MVC,所以是几百行代码后的请求模型):

  public function addAppl($data){
    foreach($_FILES as $key=>$value){
      foreach($value as $kkey=>$vvalue){
        echo "<br>".$key.": ".$kkey." :".$vvalue;
      }
    }
  }
applInputIdentityFile: name :20200430_115117.jpg
applInputIdentityFile: type :
applInputIdentityFile: tmp_name :
applInputIdentityFile: error :1
applInputIdentityFile: size :0
applInputProdCertFile: name :20200430_115117_resized.jpg
applInputProdCertFile: type :image/jpeg
applInputProdCertFile: tmp_name :/tmp/phpLoBwTl
applInputProdCertFile: error :0
applInputProdCertFile: size :382022

你能帮我解决这个问题吗?

您必须编辑 upload_max_filesize

你可以编辑htaccess文件,添加这一行

php_value upload_max_filesize 256M //256M more or less

或编辑 php.ini 文件,找到并更改它:

upload_max_filesize = 256M //256M more or less