我有一个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。这让我进入servlet,但请求没有文件流。当我到达代码中的这一行时:
FileItemIterator iter = upload.getItemIterator(request); //Nothing is here in iter.
您不能通过RPC进行上传,这就是为什么您必须将表单提交给servlet的原因。
final FormPanel form = new FormPanel();
form.setEncoding(FormPanel.ENCODING_MULTIPART);
form.setMethod(FormPanel.METHOD_POST);
form.setAction("/upload");
所以,当你执行form.submit()时,它会将你的文件发送给Action(Servlet)。在服务器端,您可以使用apache的库(commons-fileupload)。你有很多不同的方法来获取你的文件,你可以保存在磁盘上,在内存上读取....