Java:上传文件并取回文件的字符串(内容)

|| 嗨,我有带有标准服务器端Servlet的GWT客户端。 我可以从GWT客户端上传文件,并在服务器端读取文件内容 我可以将其作为String发送回客户端 但 我的GWT FormPanel具有操作(myModule + \“ import \”)。 FormPanel从Servlet调用POST。浏览器然后将我重定向到myurl / import,这样我就可以看到上传文件的内容。 这不是我想要的。我只想找回我的String。我加了 将SubmitCompleteHandler提交到我的FormPanel,但不记录任何结果。 我注意到servlet具有类似such0ѭ的方法,因此我尝试使用text / html,text / plain ...我不知道应该在那儿... 一句话说,我想从Servlet将String发送回客户端,而无需浏览器将我重定向到其他地方。可能吗?     
已邀请:
        由于您正在提交表单,因此您可以通过浏览器更改导航。为了使其按您希望的方式工作,您必须使用ajax发送文件。对于GWT,有一个GWTUpload库可以让您做到这一点。     
         如果浏览器将您重定向,那是因为您为FormPanel提供了“目标”。默认情况下,它会在隐藏的iframe中提交(也称为“ ajax上传”)。 如javadoc中所述,如果要可靠地调用
onSubmitComplete
,则必须在servlet中将
setContentType(\"text/html\")
onSubmitComplete
的结果是返回的HTML的
body
innerHTML
,因此在发送回带有
<
&
的值时,您必须非常小心。取回它们的唯一可靠方法是在服务器端将它们转义,然后在客户端取消转义。您可以使用自己的转义机制,也可以使用
&lt;
&amp;
。在后一种情况下,要在客户端进行转义,您可以使用String#replace或创建一个HTML元素,使用返回的字符串将其设置为innerHTML,然后获取其innerText:
public String htmlUnescape(String htmlEscaped) {
   Element tmp = Document.get().createDivElement();
   tmp.setInnerHTML(htmlEscaped);
   return tmp.getInnerText();
}
在服务器端,您将使用:
escaped = content.replace(\"&\", \"&amp;\").replace(\"<\", \"&lt;\")
(如果您不希望ѭ6变成ѭ13,则在这里订购很重要;而且,替换
<
&
就足够了,
>
\"
不会在这里引起任何问题) 但是,根据您的情况,请首先确保文件的内容是\“ text \”而不是\“ binary \”,因为将它作为String返回没有意义,这取决于您的使用方式客户端的价值。     

要回复问题请先登录注册