我试图把文件上传到谷歌驱动器与ProgressListener并启用块大小 (因而与DirectUploadEnabled禁用)。 这样,我有一个更可靠的上传和一个进度指示给用户的可能性。
我将文件从GWT网站转移到GAE与FormPanel中和FileUploadField哪些职位的文件GAE上提交()。 在GAE我接受与使用org.apache.commons.fileupload收到这些文件作为流的UploadServlet文件。 我不希望收到关于GAE提供完整的文件,因为这些文件都大。 因此,我从传入的请求所接收的流开始上载(插入)到谷歌驱动器。
现在有一个问题; 用于插入我需要知道流的大小;
int lContentLength = getRequest().getContentLength();
FileItemStream lFileItemStream = getFileItemStream();
InputStream lInputStream = lFileItemStream.openStream();
BufferedInputStream lBufferedInputStream = new BufferedInputStream(lInputStream);
InputStreamContent lInputStreamContent = new InputStreamContent(pContentType, lBufferedInputStream);
lInputStreamContent.setLength(lContentLength);
我的第一个猜测是从传入的Servlet请求ContentLengt。 但是,这是不正确的,因为这涉及到完整的请求(其中还包含用作参数等领域)。 如果没有驱动器选项DirectUploadEnabled我需要上传的文件的确切流大小,否则上传失速的末...
我如何虎视眈眈这个文件的大小? 该谷歌的例子是愚蠢的,因为它使用本地文件;
https://code.google.com/p/google-api-java-client/wiki/MediaUpload
是从本地文件,很容易得到的文件大小(mediaFile.length())。 但是,从一个网站...几个网站指定它是不可能抢到文件大小前提交()从网站,似乎也无法确定在GAE上的数据流的大小,而无需加载完整的文件...
如何确定这个streamsize可? 是否有此问题的另一种解决方案?