标签:struts2
有些时候,如果我们提供的下载文件包含中文名称,直接给出该地址会报错。这时我们就需要自己写一个action来实现文件下载的功能。
前台界面部分:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <base href="<%=basePath%>"> <!-- 导入struts2标签库 --> <%@taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>上传成功</title> </head> <body> <a href="downLoadAction.action">下载word文档</a> </body> </html>
package com.hcj.action; import java.io.InputStream; import org.apache.struts2.ServletActionContext; import com.hcj.model.Book; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class DownLoadAction extends ActionSupport { //该属性是依赖注入的属性,可以在配置文件中动态指定该属性值 private String inputPath; //依赖注入该属性之的setter方法 public void setInputPath(String inputPath) { this.inputPath = inputPath; } /* * 定义一个返回InputStream的方法 * 该方法将作为被下载文件的入口, * 且需要配置stream类型结果时指定inputName参数 * inputSteam参数的值就是方法去掉get前缀,首字母小写的字符串 */ public InputStream getTargetFile() throws Exception { //返回指定文件对于得输入流 return ServletActionContext.getServletContext().getResourceAsStream(inputPath); } @Override public String execute() throws Exception { // TODO Auto-generated method stub return SUCCESS; } }
<action name="downLoadAction" class="com.hcj.action.DownLoadAction"> <!-- 指定被下载资源的位置 --> <param name="inputPath">/upload/实习生计划-洪陈金.docx</param> <!-- 配置结果类型为stream的结果 --> <result name="success" type="stream"> <!-- 指定被下载文件的文件类型(此处为后缀为.docx的word文档) --> <param name="contentType">application/vnd.openxmlformats-officedocument.wordprocessingml.document</param> <!-- 指定由getTargetFile()方法被下载文件的inputStream --> <param name="inputName">targetFile</param> <param name="contentDisposition">filename="test.docx"</param> <!-- 指定下载文件缓冲大小 --> <param name="bufferSize">4096</param> </result> </action>
标签:struts2
原文地址:http://blog.csdn.net/u011768325/article/details/45366303