我有一个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.
答案 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)。你有很多不同的方式来获取你的文件,你可以保存在磁盘上,读取内存....