2011-04-06 84 views
1

我有一个生成的HTML文件,我需要能够点击下载按钮(所以不能在新窗口中打开,只显示此特定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); 

任何帮助是极大的赞赏,因为我已经打破我的头这一点。

+2

“我到目前为止的代码:” - 什么是实际问题?它不起作用吗?你不确定下一步该去哪里?你有错误吗?请更具体一些。 – 2011-04-06 15:50:36

+0

该代码的工作原理与它生成所需的HTML文件一样,但只在新选项卡中打开(用'getMainWindow()调用)open(inputHTML,“_blank”);') – Fverswijver 2011-04-07 07:22:43

回答

2

将HTML包装在Zip文件中。我知道没有浏览器会尝试显示一个Zip文件,而是将其作为文件推送到“打开(在Zip存档程序中)或保存”。

+0

它是否像这样工作,魅力。非常感谢 – Fverswijver 2011-04-13 08:33:56

+0

不用担心。很高兴你把事情解决了。 :) – 2011-04-13 08:39:49

2

您应该将结果的HTTP Content-Disposition标题设置为附件。你怎么做取决于你如何与Web服务器交互。以前的代码是作为一个servlet运行的,在play framwork中,作为一个cgi等?