gpt4 book ai didi

java - ServletFileUpload,GWT 不会破坏大文件

转载 作者:行者123 更新时间:2023-11-28 22:54:18 32 4
gpt4 key购买 nike

我有一个 GWT 应用程序,我们需要上传文件,但我想限制大小。所以目前我有这个:

ServletFileUpload.isMultipartContent(request);
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(theFactory);
upload.setFileSizeMax(<2mb>);
upload.setSizeMax(<2mb>);

try {
final List<FileItem> items = upload.parseRequest(request);
for (FileItem fileItem : items) {
<do file stuff>
}
}
catch (FileUploadException e) {
<break and return error>
}

当我在开发模式下上传一个超过 300 MB 的文件时,一旦遇到 for 循环,它就会中断并在异常中显示文件太大。这发生在我点击上传按钮后一秒钟。

当应用程序部署在 tomcat 上时,它会等待文件完全上传,而不是中断并拒绝文件。

我知道有一个 tomcat 参数,但是对于不同的 servlet,我接受上传的文件大小非常不同,我想为 servlet 单独设置这个,而不是最大值,它可以比大多数人接受的大得多值(value)观。

最佳答案

您可以将 ChangeHandler 添加到 GWT 中的上传按钮,并从中调用本地方法,将按钮的元素传入:

    private native boolean isFileSizeValid(Element inputFile)/*-{
var fileToUpdate = inputFile.files[0];
return fileToUpdate.size < 200...0; // pick the right number
}-*/;

这对于单个文件会很好地工作(如果在输入元素上禁用“多个”)。如果您允许上传多个文件,您可以遍历 files[] 数组的所有项目并进行计算。

此方法将帮助您执行所有客户端验证,但需要来自客户端浏览器的 FileAPI 支持。 http://caniuse.com/#feat=fileapi

抱歉,如果您只是在寻找后端验证。

关于java - ServletFileUpload,GWT 不会破坏大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31702304/

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