【问题标题】:the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is false请求不包含 multipart/form-data 或 multipart/mixed 流,内容类型标头为 false
【发布时间】:2014-10-31 16:47:05
【问题描述】:

我想通过 ajax 发送图像,但出现以下异常:

org.apache.commons.fileupload.FileUploadBase$InvalidContentTypeException: the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is false

令人惊讶的是,当我定期(而不是通过 ajax)发送此表单时,表单工作正常。我尝试将 Content-Type 更改为 multipart/form-data 但随后出现此异常:

org.apache.commons.fileupload.FileUploadException: the request was rejected because no multipart boundary was found

这里是jquery代码:

$(document).ready(function() {
    $("#myform").submit(function(e) {
       e.preventDefault();
       var data = new FormData();
       data.append('file', document.formName.file.files[0]); // <-- possibly this line doesn't work
       $.ajax({
          url: 'upload.do',
          data: data,
          cache: false,
          contentType: false,
          processData: false,
          type: 'POST',
          success: function(res) {
          }
      });
   });
});

和形式:

 <form name="formName" enctype="multipart/form-data" id="myform" action="upload.do" method="POST">    
   <input type="file"  name="file" id="input-file" /> 
   <br>
   <input type="submit" value="Upload images" class="upload" />
 </form>

【问题讨论】:

    标签: java javascript jquery ajax file-upload


    【解决方案1】:

    试试这个:

    $(document).ready(function() {
        $('.upload').click(function() {
            var input = document.getElementById('input-file');
            file = input.files[0];
            var data = new FormData();
            data.append('file', file);
            $.ajax({
                url: 'upload.do',
                data: data,
                cache: false,
                contentType: false,
                processData: false,
                type: 'POST',
                success: function(res) {
                }
            });
        });
    });
    

    【讨论】:

    • 对不起兄弟。没有任何改变。
    • 尝试在 ajax 调用之前添加alert(data),如果它包含任何内容,请告诉我。
    • 在第一个警报中:[Object FormData]
    • 第二个警报是空的,因为在 servlet 中发生了异常并且没有响应发送。
    • 您是否遇到同样的错误?请在upload.do 中展示您拥有的内容。
    猜你喜欢
    • 2015-08-27
    • 2017-01-14
    • 2016-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-31
    • 2013-08-08
    • 2017-02-05
    相关资源
    最近更新 更多