GWT:从客户端下载文件,无需服务器干预

时间:2014-09-08 06:52:58

标签: gwt download gwt-rpc gwt2 gxt

我在UI中显示了用户信息,用户可以将其作为文件下载。当用户点击下载时,我想将客户端中存在的信息写入文件并使其可下载。所有的下载功能都应该对客户端不敏感,没有任何服务器干预。我遇到过这篇文章,

1)How can a user download a file in client side (Google Web Toolkit)

但没多大帮助。

感谢。

2 个答案:

答案 0 :(得分:1)

您无法写入文件,但您可以创建 blob (使用字符串或类型数组)并获取该Blob的URL使其可下载(只需将该URL作为链接的href,可能添加download属性以强制下载。

目前,GWT对类型化数组有一些支持(只有在需要二进制而不是文本时才有用),但对于blob则不行,所以你必须使用JSNI(或者可能使用GWT元素)。

要获得浏览器兼容性,请参阅http://caniuse.com/#feat=blobbuilderhttp://caniuse.com/#feat=blobbuilderhttp://caniuse.com/#feat=bloburlshttp://caniuse.com/#feat=download

注意:还有其他涉及Flash或其他手册的解决方案,但浏览器兼容性确实更好(您可以使用旧浏览器,但可能会丢失更新的浏览器,特别是当人们越来越多地转向"点击播放"插件模式。)

答案 1 :(得分:0)

如果文件不是太大,您可以使用数据URI方案

button.setAttribute("download", "filename.ext");    
String url = "data:Application/octet-stream;base64," + dataAsBase64;
button.setHref(url);

我在http://jsfiddle.net/cn1ckawL/

做了一个小提琴