3

我正在使用 FormPanel 将文件上传到服务器。我正在尝试做的是在上传之前确保文件大小小于给定大小(例如 10MB)。在服务器端,我有一个 javax.servlet.http.HttpServlet,我将在其中覆盖 doPost。这里的 HttpServletRequest 参数具有文件的大小,但问题是在文件已经上传之前我没有到达 doPost。因此,如果我选择上传 1 GB 的文件,则客户端收到的“文件太大”错误消息在整个文件上传后的 30 秒左右不会出现。

在上传之前,有没有办法在客户端检查大小?或者,如果数据大小超过特定大小,则让 servlet 引发异常。

4

2 回答 2

5

只需添加本机方法:

private native int getFileSize(final Element data) /*-{
            return data.files[0].size;
        }-*/;

然后这样称呼它:

final FileUpload upload = new FileUpload();
//
// some actions
//
final int size = getFileSize(upload.getElement())

对我来说效果很好。

于 2015-07-17T10:18:42.730 回答
3

没有办法从服务器执行此操作,您必须在上传之前进行检查。在GWT SDK 中,您可以找到几条路线,这些路线都找不到。

因为并非所有 GWT 支持的浏览器都实现了 HTML5 的 File API,所以没有原生的 GWT 解决方案。但是,您可以尝试这个库,它为您提供支持 HTML5 文件 api 的文件上传小部件:

https://code.google.com/p/lib-gwt-file/

于 2013-06-02T23:51:59.940 回答