从Struts2文件上传实用程序发布ajaxForm不能在IE中工作

背景:我正在寻找一个使用ajax + Struts2异步上传大文件的工具,我能够使用servlet做同样的事情,但是当我修改逻辑来调用struts动作时。 我注意到当我尝试使用struts2动作上传一个巨大的文件时,它不会从jquery ajaxForm(options);调用ajaxForm(options);

我已经使用了下面链接中指定的示例代码,这完全正常。 http://www.simplecodestuffs.com/file-upload-with-progress-bar-using-jquery-in-servlet/

任何人都可以告诉以下jquery函数调用是否正确上传function。 $("#uploadtest").ajaxForm(options);

我试过,但是当上传大量数据时,它在一个特定的浏览器中没有按预期工作。 (也就是说,发生客户端ajax调用,但是后端没有调用相应的struts2操作,在服务器端没有生成日志)。 我无法理解为什么在jquery ajaxform上传大文件(多部分上传function)时没有调用struts2动作。

jquery $("#uploadtest").ajaxForm(options);

jsp snippet

类似的问题在这里被问到.. 在IE8 / 9中的FormData

将大文件上传到Struts2操作的问题是该请求可能不符合Struts2默认使用的限制。 在配置设置中,该值设置为2097152.您还可以设置每个操作的限制。 您可以在Struts2文件上传 – 高级配置中找到更多相关信息:

Struts 2 default.properties文件定义了几个影响文件上载行为的设置。 您可能会发现有必要更改这些值。 名称和默认值为:

 struts.multipart.parser=jakarta struts.multipart.saveDir= struts.multipart.maxSize=2097152 

此文档页面的下一部分是文件大小限制 ,您已经注意到下划线框架(struts2,commons-fileupload)使用的文件大小的限制:

有两个单独的文件大小限制。 首先是来自Struts 2 default.properties文件的default.properties 。 出于安全原因,此设置存在以禁止恶意用户上载极大文件以归档服务器磁盘空间。 此设置默认为大约2兆字节,应调整为您需要框架接收的最大文件大小(最大2 GB )。 如果要在表单上上载多个文件,则struts.multipart.maxSize将应用于组合总计,而不是单个文件大小。 另一个设置maximumSize是一个拦截器设置,用于确保特定的Action不会收到太大的文件。 请注意以下示例中两个设置的位置:

        500000    good_result.jsp   

如果文件大小超过上述配置设置,则伪进度条会在返回响应后立即停止。 它可能是1%或100%,它取决于阈值速度和文件大小。 但在服务器端,您可能会看到exception

 org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (xxx) exceeds the configured maximum (yyy) 

以及警告。 如果框架没有超出框架的限制,您可以使用框架调整文件大小限制。