我在UI中显示了用户信息,用户可以将其作为文件下载。当用户点击下载时,我想将客户端中存在的信息写入文件并使其可下载。所有的下载功能都应该对客户端不敏感,没有任何服务器干预。我遇到过这篇文章,
1)How can a user download a file in client side (Google Web Toolkit)
但没多大帮助。
感谢。
答案 0 :(得分:1)
您无法写入文件,但您可以创建 blob (使用字符串或类型数组)并获取该Blob的URL使其可下载(只需将该URL作为链接的href
,可能添加download
属性以强制下载。
目前,GWT对类型化数组有一些支持(只有在需要二进制而不是文本时才有用),但对于blob则不行,所以你必须使用JSNI(或者可能使用GWT元素)。
要获得浏览器兼容性,请参阅http://caniuse.com/#feat=blobbuilder和http://caniuse.com/#feat=blobbuilder,http://caniuse.com/#feat=bloburls和http://caniuse.com/#feat=download
注意:还有其他涉及Flash或其他手册的解决方案,但浏览器兼容性确实更好(您可以使用旧浏览器,但可能会丢失更新的浏览器,特别是当人们越来越多地转向"点击播放"插件模式。)
答案 1 :(得分:0)
如果文件不是太大,您可以使用数据URI方案
button.setAttribute("download", "filename.ext");
String url = "data:Application/octet-stream;base64," + dataAsBase64;
button.setHref(url);
做了一个小提琴