如何使用fileUploader和GWT 2.4从服务器检索inputStream?

时间:2011-12-02 23:00:59

标签: gwt mvp inputstream gwt-2.4

我有一个fileUploader小部件,我用它来选择一个xml文件。然后我有一个按钮,当用户提交所选文件时,它会在viewImpl类中调用我的处理程序。如果我理解正确,从那里我从formPanel做提交,文件在服务器上。

@UiHandler("calculateComplexityButton")
    void onClickCalculateComplexity(ClickEvent e){
        formPanel.submit();
        //How do I get the inputStream back to here????
        presenter.getTask(inputStream);
    }

我的问题是如何从服务器上获取inputStream?我尝试使用RPC调用所有这些,但是当我尝试获取inputStream时,我没有从服务器上取下任何东西。我试过了:

inputStream = request.getInputStream();

但似乎是空的。关于这个的任何想法?

我删除了RPC代码并使用了一个简单的HTTPRequest,我找到了here。这让我进入servlet,但请求没有文件流。当我在代码中到达这一行时:

FileItemIterator iter = upload.getItemIterator(request); //Nothing is here in iter.

1 个答案:

答案 0 :(得分:1)

您无法通过RPC上传,这就是您必须将表单提交给servlet的原因。

final FormPanel form = new FormPanel();
form.setEncoding(FormPanel.ENCODING_MULTIPART);
form.setMethod(FormPanel.METHOD_POST);
form.setAction("/upload");

因此,当你执行form.submit()时,它会将你的文件发送到Action(Servlet)。在服务器端,您可以使用lib表单apache(commons-fileupload)。你有很多不同的方式来获取你的文件,你可以保存在磁盘上,读取内存....