发布请求缺少边界标头

时间:2018-10-02 12:07:32

标签: javascript ajax html5 post

我正在尝试向服务器发送csv文件。我正在使用FileReaderAPI加载文件,然后通过ajax发送。但是我收到以下错误。

  

对于请求'POST / api / upload'[缺少边界标头]

JS

$('#upload-file-btn').on('click', function(e){
      e.preventDefault();

      var file = document.getElementById('input_file').files[0];
      console.log(file);
      reader = new FileReader();
      reader.onload = function () {
          var source = reader.result;
          var payload = {source: source};
          console.log(source);
          $.ajax({
           url:"http://localhost:9000/api/upload",
           type:"POST",
           data: JSON.stringify(payload),
           success: function(data){
              console.log(data);
           }
         });

      }
      reader.readAsText(file);
});

某些解决方案建议手动包含"Content-Type" : "multipart/form-data"标头会导致此问题。我没有使用但仍然得到上述问题。

2 个答案:

答案 0 :(得分:2)

如果您需要将数据作为文件发送,则必须使用FormData对象通过ajax发送多部分/表单数据数据。

     var fd = new FormData();
     fd.append('source', $('#input_file')[0].files[0]);
     $.ajax({
       url:"http://localhost:9000/api/upload",
       type:"POST",
       data: fd,
       contentType: false,
       processData: false,
       success: function(data){
          console.log(data);
       }
     });

答案 1 :(得分:0)

尝试以下操作:

$.ajax({
       url:"http://localhost:9000/api/upload",
       type:"POST",

       contentType: "application/json; charset=utf-8",
       dataType: "json",

       data: JSON.stringify(payload),
       success: function(data){
           console.log(data);
       }
     });
  });

或看看Jquery Ajax Posting json to webservice