我正在使用 Struts2
下载文件。当我单击按钮下载文件时,文件会自行下载并在 Excel 中打开,而不是我希望下载它,当我右键单击它时,我应该能够打开或保存它。在 IE
和 Firefox
中,我会看到一个打开或保存文件的窗口,但在 Chrome
中,文件文件会自行在 Excel 中打开。有什么方法可以像 Firefox
和 IE
一样在 Chrome
中使用它
行动
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>
最佳答案
询问是否使用桌面应用程序打开文件或保存文件的提示由设置为 attachment
(您已设置)的 contentDisposition
HTTP header 给出。相反,inline
会尝试使用浏览器插件打开文件,而不询问任何内容。
也就是说,您的问题背后的原因是您(或有权访问您计算机的人)之前已指示 Chrome 始终打开此类文件,而这就是为什么它不这样做的原因再次询问您要做什么:
解决方案是从设置中清除此选项
自定义和控制 Google Chrome 设置 + 显示高级设置 清除自动打开设置
关于java - 使用 Struts2 提示下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38645067/