Ext+struts2如何实现文件下载
我前台用的是Ext的Grid来展示文件列表, 服务端是用Struts2,现在想让用户选中一个文档后点下载按钮就能实现文档下载功能。数据库里放的是文档的名称和路径,文档的实际路径在c盘某个目录中,请问如何实现下载。
我再struts配置文件中
<action name="DownLoadDocument" class="DocumentAction" method="downLoadDocument">
<result type="stream">
<param name="inputName">inputStream</param>
<param name="contentType">application/x-msdownload;charset=utf-8</param>
<param name="contentDisposition">attachment;filename="hello"</param>
<param name="bufferSize">15097152</param>
</result>
</action>
可是返回时用firefox只能看到返回的文件流,并不能出现文件下载提示框。
请教各位高手是什么原因?
[解决办法]
<!------------文件名:DownLoadAction.java ------------------>import java.io.InputStream;import java.io.UnsupportedEncodingException;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class DownLoadAction extends ActionSupport { //下载文件原始存放路径 private final static String DOWNLOADFILEPATH="/upload/"; //文件名参数变量 private String fileName; public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } //从下载文件原始存放路径读取得到文件输出流 public InputStream getDownloadFile() { return ServletActionContext.getServletContext().getResourceAsStream(DOWNLOADFILEPATH+fileName); } //如果下载文件名为中文,进行字符编码转换 public String getDownloadChineseFileName() { String downloadChineseFileName = fileName; try { downloadChineseFileName = new String(downloadChineseFileName.getBytes(), "ISO8859-1"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return downloadChineseFileName; } public String execute() { return SUCCESS; }}