0
var urlUpload = "${root}manager/uploadFile.html";
var params = $('#topicForm').serialize();

    $.ajax({
        type: 'POST',
        url: urlUpload,
        data: params,
        contentType: 'multipart/form-data',
                processData: false,
        success: function(data) {
            alert("success");
        }
    });

@RequestMapping(value="/manager/uploadFile.html", method = RequestMethod.POST)
public String uploadFile(@ModelAttribute("topicForm") TopicForm topicForm,        
@RequestParam("topicDoc") MultipartFile multipartFile ModelMap model) { ... }

我收到以下异常

org.springframework.web.multipart.MultipartException:无法解析多部分 servlet 请求;嵌套异常是 org.apache.commons.fileupload.FileUploadException:请求被拒绝,因为没有找到多部分边界。

该插件运行良好,谢谢。

var urlUpload = "${root}manager/uploadFile.html?categoryId="+$("#category").val()+"&topicName="+$("#topicName").val();
 $.ajaxFileUpload({
 url:urlUpload, 
 secureuri:false,
 fileElementId:'fileupload',
 dataType: 'html',
 success: function (data, status) {
   alert("success");
 }
});

该插件工作正常,现在我需要将几个表单字段与输入文件一起发送到控制器。在上面的 ajax 调用中,我将值附加到 url。有没有其他解决方案?

4

1 回答 1

0

问题是您正在尝试上传表单的 URL 编码序列化,同时声称它是多部分的(请参阅JQuery函数的文档)。serialize()

您需要使用一个插件来创建正确的请求。是我用过的一个。

或者,您可以使用HTML5上传文件。我没有这样做。

于 2013-03-26T14:36:57.227 回答