<body> <a href="DownloadAction?fileName=荷花.txt">下载文档</a> <br /> <a href="DownloadAction?fileName=荷花.jpg">下载图片</a> <br /> </body>
fileName带文件名后缀。浏览器
public class DownloadAction extends ActionSupport { private String fileName; public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } public InputStream getInputStream(){ return ServletActionContext.getServletContext().getResourceAsStream("resource/" + fileName); } @Override public String execute() throws Exception { return SUCCESS; } }
<action name="DownloadAction" class="action.DownloadAction"> <result name="success" type="stream"> <!-- 指定action中获取输入流的方法,getInputStream,约定:去掉get,后面部分转化为camel写法 --> <param name="inputName">inputStream</param> <!-- 设置浏览器对此stream(输入流)的处理方式:保存为文件,filename指定文件名 --> <param name="contentDisposition">attachment;filename=${fileName}</param> <!-- 设置缓冲大小,默认单位字节 --> <param name="bufferSize">4096</param> <!-- 解决中文文件名出错 --> <param name="encode">true</param> </result> </action>