2016-07-28 101 views
1

我正在使用Struts2下載文件。當我點擊按鈕下載文件時,文件會自行下載並在Excel中打開,而不是我希望它下載,當我右鍵點擊它時,我應該可以打開或保存它。在IEFirefox我得到一個窗口來打開或保存文件,但在Chrome文件文件本身打開在Excel中。有沒有辦法把它在Chrome就像FirefoxIE使用Struts2下載文件並提示

行動

public String viewReport() throws Exception { 
    boolean returnReport; 
    inputStream = new FileInputStream(DOCUSIGN_REPORT_FILE); 

    try { 
     returnReport = validateRequest(); 
     if (returnReport) { 

     intgList = this.generateViewIntegrationReportData(getESignUIConfig()); 
     this.createCSVFile(intgList, DOCUSIGN_REPORT_FILE); 

     } else { 
      failureResponse(msgs, 400); 
      return null; 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
     msgs.add(new Message(ESignatureIntegrationMessageTypeEnum.MESSAGE_TYPE_ERROR, 
        UiIntegrationKeyConstants.UI_INTEGRATION_ERROR_CODE_500, UiIntegrationKeyConstants.UI_INTEGRATION_ERROR_TEXT_SERVICE_ERROR)); 
     failureResponse(msgs, 500); 
     return null; 
    } 

    return UiIntegrationKeyConstants.REPORT_REPSONSE; 
} 

struts.xml的

<action name="*Integration" method="{1}" class="foo.bar.ESignatureIntegrationAction"> 
    <result name="success" type="tiles">integrationView</result> 
    <result name="reportResponse" type="stream"> 
     <param name="contentType">application/text/csv</param> 
     <param name="inputName">inputStream</param> 
     <param name="contentDisposition"> 
      attachment;filename="DocuSignEnvelopeReport.csv" 
     </param> 
     <param name="bufferSize">4096</param> 
    </result> 
</action> 

回答

1

的提示,詢問是否與桌面應用程序中打開文件或保存由contentDisposition HTTP標頭設置爲attachment(您已設置)。相反,inline會嘗試用瀏覽器插件打開文件,而不詢問任何內容。

這就是說,你的問題背後的原因是,你(或某人訪問您的計算機)已事先通知Chrome瀏覽器這種類型總是打開的文件,這就是爲什麼它不問你了約該怎麼做:

enter image description here


的解決方案是清除此選項從設置


自定義和控制谷歌瀏覽器設置+顯示高級設置清除自動打開設置


enter image description here

+1

你是真棒安德烈。你明白我的問題,沒有任何進一步的調查,你回答了我正在尋找的東西。我被告知這是一個瀏覽器行爲,但沒有人知道如何解決它。再次感謝你。 – Jaykumar