2011-04-06 81 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等?