我有一个生成的HTML文件,我只需要点击一个按钮即可下载(所以不要在新窗口中打开,只显示这个特定html文件的保存文件对话框)。
到目前为止我的代码:
AVaadinApplication application = VaadinContext.getCurrentInstance().getVariable(VaadinContext.APPLICATION, AVaadinApplication.class);
StreamResource inputHTML = new StreamResource(
new StreamResource.StreamSource() {
private static final long serialVersionUID = 1L;
@Override
public InputStream getStream() {
return new ByteArrayInputStream(getHelpContentString(getLocale()).getBytes());
}
}, "help_" + getLocale() + ".html", application);
inputHTML.setCacheTime(0);
我非常感激任何帮助,因为我一直在为此而烦恼。
答案 0 :(得分:2)
您应该将结果的HTTP Content-Disposition
标头设置为附件。如何执行此操作取决于您与Web服务器的交互方式。以前的代码是作为servlet运行的,在play framwork中,作为cgi等运行吗?
答案 1 :(得分:2)
将HTML包装在Zip文件中。我知道没有任何浏览器会尝试显示Zip文件,而是将其作为文件推送到“打开(在Zip存档程序中)或保存”。