我在应用程序中使用 Struts2。我需要下载 excel 文件(.xlsx 和 .xls 格式)。这在IE中工作正常,但在Chrome中显示错误
"从服务器接收到重复的标头"
我在文件名("<文件名")之前使用引号。它仍然无法在铬中工作。下面是我的应用程序中使用的代码片段。>
支柱.xml
<action name="*Excel" method="{1}" class="ReportUtilityAction">
<result name="success" type="stream">
<param name="contentType">application/vnd.ms-excel</param>
<param name="inputName">fileInputStream</param>
<param name="bufferSize">1024</param>
</result>
</action>
我已经提到操作类中的内容处置为
static final private String Content = "Content-Disposition";
HttpServletResponse response = this.getHttpResponse();
response.setHeader(Content, "attachment;filename='Export.xlsx';");
您可以按照设置其他标头的相同方式设置contentDisposition
:在支柱配置中。
<result name="success" type="stream">
<param name="contentDisposition">attachment;filename="Export.xlsx";</param>
<param name="contentType">application/vnd.ms-excel</param>
<param name="inputName">fileInputStream</param>
<param name="bufferSize">1024</param>
</result>
您还可以使用 ${}
表示法对其进行参数化,并在 Action 中使用相应的 getter:
<param name="contentDisposition">attachment;filename="${filename}";</param>
public String getFilename(){ ... }
该错误意味着标头字段设置了两次;您应该能够在 HTTP 跟踪中看到这一点。因此,您需要找出为什么它设置了两次。