Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery FormData发送文件+;数据_Jquery_Ajax_Multipartform Data_Form Data_Asyncfileupload - Fatal编程技术网

Jquery FormData发送文件+;数据

Jquery FormData发送文件+;数据,jquery,ajax,multipartform-data,form-data,asyncfileupload,Jquery,Ajax,Multipartform Data,Form Data,Asyncfileupload,我正在尝试将一些表单数据和文件上载到REST端点。我编写了以下代码- $(document).ready(function() { var data = new FormData(); //upload file append to formdata $("#catItemData #uploadC").on('change', function(){ $this = $(this); var file = $this[0].files

我正在尝试将一些表单数据和文件上载到REST端点。我编写了以下代码-

$(document).ready(function() { 

   var data = new FormData();

  //upload file append to formdata
  $("#catItemData #uploadC").on('change', function(){
          $this = $(this);
          var file = $this[0].files[0];   
          data.append("xlsx",file);               

 //input fields append to formdata
  $("#catItemData #catSubmit").click(function(){
      var formD = {
              name: $("#name").val(),
              type: $("#type").val()
      };
      for (var key in formD) {
          data.append(key, formD[key]);
      }       
        $.ajax({            
               type: "POST",
               url: "http://localhost:8086/service/create",        
               data: data,
               contentType: false,
               cache: false,
               processData: false,
               success: function(response, status, xhr) { 
                       //response
                    }
              });   
      });
  }); 
但是,这不会上载任何文件内容,并给我一个415不支持的媒体类型错误。这就是有效载荷的样子-

------WebKitFormBoundaryangazBC1YNO1U 内容配置:表单数据;name=“xlsx”;filename=“testfile.xlsx” 内容类型:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

------WebKitFormBoundaryangazBC1YNO1U 内容配置:表单数据;name=“name”

你好

------WebKitFormBoundaryangazBC1YNO1U 内容配置:表单数据;name=“type”

平台


我错过了什么?非常感谢您的帮助。

您必须在方法下声明
数据
变量,如果没有对文件更改进行任何验证,则无需对文件输入进行
更改
事件。点击功能下无需var
formD
。您的代码应该是这样的

$(document).ready(function() { 



  $("#catItemData #catSubmit").click(function(){
      var data = new FormData();
      data.append('name', $("#name").val());
      data.append('type', $("#type").val());
      data.append("xlsx",$('#uploadC')[0].files[0]); 
        $.ajax({            
               type: "POST",
               url: "http://localhost:8086/service/create",        
               data: data,
               contentType: false,
               cache: false,
               processData: false,
               success: function(response, status, xhr) { 
                       //response
                    }
              });   
      });
  }); 

REST端点无法识别该文件格式。为什么不使用?我使用命令提示符测试了后端,它立即上传了一个excel文件,没有任何麻烦。我是否需要在此处修改文件的内容类型,以便它可以通过?后端可以处理多部分/表单数据和应用程序/八位字节流类型的内容。我现在将在@Ali Sheikhpour尝试一下。即使使用Jquery表单,我也会收到相同的415错误。我现在不知所措,这很有效,谢谢你。此外,我还必须在文件输入中添加class=“input file”,以便处理文件的数据。