Glassfish 3.1.2.2文件上传

时间:2013-09-05 15:40:51

标签: java javascript spring apache glassfish

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

应用程序服务器是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

我尝试了什么:

    domains.xml中的
  • max-post-size-bytes="0"max-post-size-bytes="1073741824"(= 1go / test-file = 300mo)
  • 使用https://java.net/jira/browse/GLASSFISH-18444
  • 中提供的内容更改web-core.jar
  • 将commons-io,commons-fileupload与glassfish / libs中的文件一起更改
  • 独立更改web-core /独立更改commons libs
  • 在web.xml中使用<bean id="multipartResolver" class="org.springframework.web.multipart.support.StandardServletMultipartResolver">代替commons-fileupload + <multipart-config>

提前致谢,

发烟

1 个答案:

答案 0 :(得分: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
  • last commons-io / commons-fileupload librairies
  • 默认glassfish web-core.jar
相关问题