使用流来做:
在Action中定义:
1.定义变量
fileName(文件名)
exportPath(导出文件夹地址)
exportResult(导出文件详细路径)
2.定义get、set方法,设置一个getDowm
/**
* 下载文件流
* <功能详细描述>
* @return
* @throws Exception
* @see [类、类#方法、类#成员]
*/
public InputStream getDownloadFile()
throws Exception
{
File file = new File(getExportPath() + "\\" + exportResult);
InputStream inputStream = null;
//ServletActionContext.getResponse().addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(message, "UTF-8"));
inputStream = new BufferedInputStream(new FileInputStream(file));
return inputStream;
}
</pre><pre name="code" class="java"><pre name="code" class="java">public String getExportPath()
{
exportPath = ServletActionContext.getServletContext().getRealPath("/UPLOAD-FILES/AUDIT");
return exportPath;
}
public void setExportPath(String exportPath)
{
this.exportPath = exportPath;
}
</pre><pre name="code" class="java">public String getFileName()
throws Exception
{
if (exportResult.equals("failed"))
{
return null;
}
final String userAgent = ServletActionContext.getRequest().getHeader("USER-AGENT");
if (StringUtils.contains(userAgent, "Mozilla"))
{// 火狐浏览器
exportResult = new String(exportResult.getBytes("UTF-8"), "ISO-8859-1");
}
else
{
exportResult = new String(exportResult.getBytes(), "UTF-8");
}
return exportResult;
//return fileName;
}
public void setFileName(String fileName)
{
this.fileName = fileName;
}
在struts配置文件中:
<action name="exportDailyAccount" class="com.cgdz.sims.actions.DailyAccountAction" method="exportExcel">
<result name="failed">/jsp/dailyAccount.jsp</result>
<result name="success" type="streamx">
<param name="contentType">text/plain</param>
<param name="contentDisposition">attachment;filename="${fileName}"</param>
<param name="inputName">downloadFile</param>
<param name="contentCharSet">UTF-8</param>
<param name="bufferSize">4096</param>
</result>
</action>