我使用 MGWT 和 GwtPhoneGap 开发了一个应用程序,并使用 rpc 进行服务器通信。我想从服务器下载文件到我的客户端设备(iOs/android)。这可能吗?如果是的话怎么办
我需要做什么才能实现我的目标?我没有从 MGWT 论坛获得大力支持。请告诉我该怎么做。
提前致谢
我对我的问题做了一些努力,我已经这样做了。但仍然没有成功。请查看我的代码。
public final native String download(String serverUrl,String filepath,Callback callback)
/*-{
return this.download(serverUrl, filePath, function(result) {
callback.Callback::o:onSuccess(Result;);)(result);
}, function(error) {
callback.Callback::o:onError(Error;);)(error);
});
}-*/;
如果文件是简单文件(例如 PDF)
只需输入文件 URL 的链接,移动导航器就会将文件下载到手机上。
如果生成文件,您必须创建一个 servlet 来执行下载:
public class ServletDownloadDemo extends HttpServlet{
private static final int BYTES_DOWNLOAD = 1024;
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws IOException{
response.setContentType("text/plain");
response.setHeader("Content-Disposition",
"attachment;filename=downloadname.txt");
ServletContext ctx = getServletContext();
InputStream is = ctx.getResourceAsStream("/testing.txt");
int read=0;
byte[] bytes = new byte[BYTES_DOWNLOAD];
OutputStream os = response.getOutputStream();
while((read = is.read(bytes))!= -1){
os.write(bytes, 0, read);
}
os.flush();
os.close();
}
}
在 GWT 中,对于 Post 请求,您可以使用 FormPanel 来将请求发送到隐藏的 iframe。
FormPanel form = new FormPanel();
form.setMethod(FormPanel.METHOD_POST);
form.setAction("/downloadServlet");
FlowPanel hiddenPanel = new FlowPanel();
hiddenPanel.add(new Hidden("name1", "value"));
hiddenPanel.add(new Hidden("name2", "value"));
form.setWidget(hiddenPanel);
RootPanel.get().add(form);
form.submit();
或者你可以输入一个真实的表格。
但通过 PhoneGap,您可以使用File API https://code.google.com/p/gwt-phonegap/wiki/FileModule,但是您必须询问用户该文件在他的手机中写入的位置。如果需要,您可以通过 RPC 请求下载文件内容,然后写入文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)