gpt4 book ai didi

java - 超过 FileSizeMax 时取消文件上传

转载 作者:行者123 更新时间:2023-12-01 18:54:36 27 4
gpt4 key购买 nike

我有一个在 JBoss 6.1 中运行的 JSF 应用程序,它使用内部Tomcat Servlet 容器。

我已经通过apache commons文件上传实现了上传。我想防止上传过大的文件并设置了属性
FileUploadBase 类中的 fileSizeMax
为 10MB。可以用了,文件
对于所有大于此值的文件,上传会抛出 FileSizeLimitExceededException
10MB。此异常会在不到一秒的时间内抛出。
但主要问题是,整个文件将通过
网络。我通过检查网络流量发现了这一点。然后重定向到错误页面就完成了。



超过最大大小时如何中断文件传输
而不传输整个文件?我假设该文件将是
由于 Web 表单属性 enctype,在多个包中传输
="multipart/form-data"

最佳答案

您无法中途中止 HTTP 请求。如果您这样做,您将无法返回 HTTP 响应,并且客户端最终不会得到任何形式的反馈,可能会出现浏览器特定的“连接已被对等方重置”错误页面。

最好的办法是事先在 JavaScript 中验证它。顺便说一句,这只适用于 browsers supporting HTML5 File API 。您没有透露您正在使用哪个 JSF 文件上传组件,所以我的印象是您只是自制了一个,所以我将给出一个适用于呈现的 HTML 的通用答案 <input type="file"> (请注意,它在例如 Tomahawk's <t:inputFileUpload> 上同样有效):

<input type="file" ... onchange="checkFileSize(this)" />

像这样的东西

function checkFileSize(inputFile) {
var max = 10 * 1024 * 1024; // 10MB

if (inputFile.files && inputFile.files[0].size > max) {
alert("File too large."); // Do your thing to handle the error.
inputFile.value = null; // Clears the field.
}
}

如果旧版浏览器不支持此功能,那么您就迷路了。您最好的选择是 Flash 或 Applet。

关于java - 超过 FileSizeMax 时取消文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14523632/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com