Я недавно сделал это с помощью Dojo Iframes.Вот код для этого (нужно вызвать его из action = "return submitForm ();" из тега формы):
submitForm = function() {
dojo.io.iframe.send({
url : "/uploadForm",
form : "html_form_id",
method : "POST",
handleAs : 'text',
load : function(response, ioArgs) {
//handle your response here...
return response;
},
error : function(response, ioArgs) {
if (ioArgs.xhr.status != 0) {
try {
//handle error here
} catch (e5) {
}
}
return response;
}
});
return false;
}
На стороне сервера, в вашем Spring Controller, вы будете обрабатывать это как:
@RequestMapping(method = RequestMethod.POST, value = "/uploadForm")
public ModelAndView onSubmit(
@RequestParam("file") MultipartFile multipartFile,
final HttpServletResponse response)
throws Exception
{
String fileName="";
if(multipartFile!=null)
{
fileName = multipartFile.getOriginalFilename();
}
//file inputstream can be accessed as multipartFile.getInputStream()
String resultCode = "0";
final String responseHTML = "<html><head></head><body><textarea>" + resultCode + "</textarea></body></html>";
response.setContentType("text/html");
final OutputStream responseStream = response.getOutputStream();
responseStream.write(responseHTML.getBytes());
responseStream.write("\r\n".getBytes());
responseStream.close();
}
Вам нужно будет указать входной параметр типа файла как «файл» (как функции обработки говорят @RequestParam («файл»))