0

当我尝试在我的应用程序中上传文件时遇到问题。

应用服务器是 Glassfish 3.1.2.2。

服务器端我正在使用 Spring MVC。所以我宣布beans.xml

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>

在控制器中,我有:

@RequestMapping(value = "/processUpload", method = RequestMethod.POST)
@ResponseBody
public Object processUpload(MultipartHttpServletRequest request) {
    ... do something with request.getFiles(...); ...
}

在客户端,我正在使用XMLHttpRequest

xhr.open('POST', url, true);

var formData = new FormData();
formData.append('something', ...);
formData.append('file', file);

它处理小文件但处理大文件,它不断给我这个异常消息:

Stream ended unexpectedly

我尝试了什么:

  • max-post-size-bytes="0"max-post-size-bytes="1073741824"domain.xml 中的 (= 1go / test-file = 300mo)
  • 使用https://java.net/jira/browse/GLASSFISH-18444中提供的更改 web-core.jar
  • 用 glassfish/libs 中的更改 commons-io、commons-fileupload
  • 独立更改网络核心/独立更改公共库
  • 在 web.xml 中使用<bean id="multipartResolver" class="org.springframework.web.multipart.support.StandardServletMultipartResolver">而不是 commons-fileupload +<multipart-config>

提前致谢,

4

1 回答 1

0

最后,我找到了一个解决方案:

$.ajax({
    type : 'POST',
    url : '/processUpload',
    data : formData,
    dataType : 'text',
    cache : false,
    processData : false,
    contentType : false,
    xhr : function () {
        ... progress things ...
    }
});

而不是使用本机 XHR。

与:

  • org.springframework.web.multipart.commons.CommonsMultipartResolver
  • 最后一个 commons-io / commons-fileupload 库
  • 默认 glassfish web-core.jar
于 2013-09-06T09:58:52.697 回答