【发布时间】:2013-01-09 12:35:31
【问题描述】:
我有一个在 JBoss 6.1 中运行的 JSF 应用程序,它使用内部 Tomcat Servlet 容器。
我已经实现了使用 apache commons 文件上传的上传。
我想防止上传过大的文件,并在FileUploadBase 类中将属性
fileSizeMax 设置为10MB。有效,文件
对于大于
10MB。此异常会在不到一秒的时间内引发。
但主要问题是,整个文件将通过
网络。我通过检查网络流量发现了这一点。然后重定向到错误页面。
超过最大大小时如何中断文件传输
不传输整个文件?我假设该文件将是
由于 web 表单属性enctype
="multipart/form-data",在多个包中传输。
【问题讨论】:
-
您在答案中的评论中提到您正在使用 PrimeFaces
<p:fileUpload>。您应该编辑您的问题以说明您正在使用<p:fileUpload>,而不是您正在使用 Commons FileUpload(使用<p:fileUpload>即已经暗示您长期以来“在幕后”使用 Commons FileUpload,请注意它是因此只是一个实现细节)。 -
PrimeFaces 只是一个不重要的细节,因为我使用的是来自浏览器的本机上传组件,没有 HTML5-JavaScript 处理。我在我的项目中使用 FileUploadFilter,如果超过最大文件大小,它使用公共文件上传类抛出异常。
-
哦,那我想知道你为什么重新发明它而不是使用
<p:fileUpload mode="simple">生成完全相同的 HTML 并完全透明地完成所有解析和模型更新工作? -
我正在使用
<p:fileUpload mode="simple">,但由于 UTF-8 错误并处理超出最大文件大小的问题,我不得不将以下类添加到我的项目中。org.primefaces.webapp.filter.FileUploadFilter和org.primefaces.webapp.MultipartRequest。 utf-8 错误链接:code.google.com/p/primefaces/issues/detail?id=3002 -
对,UTF-8 错误。它已在 3.5 快照中修复。另见code.google.com/p/primefaces/issues/detail?id=3002stackoverflow.com/questions/11190081/…之前也报道过,至于最大尺寸,好吧,请看下面的答案。
标签: java jsf file-upload apache-commons apache-commons-fileupload