在GWT应用程序中,我想要一个按钮,单击该按钮将下载给定URL的文件。它是带有.out后缀的纯文本日志文件(不是html)。
我的第一次尝试是使用“window.open()”(尝试了gwt和本地javascript window.open)
不幸的是,浏览器(试过chrome和firefox等)试图变得聪明,并注意到文件是文本文件,因此在弹出窗口中显示内容,而不是下载它。更糟糕的是,似乎浏览器将.out文件渲染为html,并且会破坏所有换行符和标签(基本上是任何空格)。
我无法控制提供.out文件的http服务器。所以我正在寻找客户端解决方案。
有人可以为我建议一个解决方案吗?
感谢。
答案 0 :(得分:8)
如果不修改来自服务器的标头,就不可能。
现代浏览器支持download
标记中的<a>
属性,允许您从普通链接触发下载:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#Attributes
答案 1 :(得分:6)
使用html5,现在可以。在元素中设置“下载”attr。
<a href="http://link/to/file" download="FileName">Download it!</a>
来源:http://updates.html5rocks.com/2011/08/Downloading-resources-in-HTML5-a-download
答案 2 :(得分:4)
将此标题添加到您的文件中。
Content-Disposition: attachment; filename=log file.out;
或在模板中使用此代码:
<html>
<head>
<meta http-equiv="content-type" content="attachment; filename=log file.out">
RequestBuilder rb = super.doCreate(serviceEntryPoint);
rb.setHeader("Content-Disposition", "attachment; filename=log file.out;");
return rb;