2013-03-26 137 views
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。有没有其他解决方案呢?

+0

只需发送ajax查询,并将url作为您的站点+无论在“RequestMapping”值中,并将其设置为POST。 – 2013-03-26 13:25:04

+1

你的问题还不清楚:你是否在寻找一个文件上传插件,你不知道如何使用你拥有的插件,或者你不知道如何处理你的控制器中的文件?对于所有这三种情况,SO都有现有的答案。 – parsifal 2013-03-26 13:44:44

+0

请回复我的问题 – John 2013-03-26 14:05:24

回答

0

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

你需要使用一个插件来创建正确的请求。 Here's我用过的一个。

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

+0

我们可以使用此插件向控制器发送附加数据,包括输入文件(fileElementId:'fileToUpload') – John 2013-03-27 07:04:59