strust2.xml:
<!--下载 -->
<action name="downloadFileAction" class="cn.tdtk.gtxy.mm.basicSettings.action.DownloadAction">
<result name="success" type="streamx">
<param name="contentType">application/octet-stream</param>
<param name="inputName">inputStream</param>
<param name="contentDisposition">attachment;filename="${downloadFileName}"</param>
<param name="bufferSize">1024</param>
</result>
</action>
action类:
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.URLDecoder;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class DownloadAction extends ActionSupport {
private static final long serialVersionUID = -7758584364932001138L;
private InputStream inputStream;
private String downloadFileName;
@Override
public String execute() throws Exception {
String fileName1=URLDecoder.decode(ServletActionContext.getRequest().getParameter("fileName"),"UTF-8");
String proPath=ServletActionContext.getServletContext().getRealPath("/");
String realPath=proPath+"Fileupload\\mmDocLoad\\"+fileName1;
System.out.println("realPath======:"+realPath);
inputStream = new FileInputStream(new File(realPath));
return SUCCESS;
}
public String getDownloadFileName() {
String fileName=ServletActionContext.getRequest().getParameter("fileName");
downloadFileName = fileName;
try {
downloadFileName = new String(downloadFileName.getBytes(), "ISO8859-1");
} catch (Exception e) {
e.printStackTrace();
}
//System.out.println("file name=============:"+downloadFileName);
return downloadFileName;
}
public InputStream getInputStream() {
return inputStream;
}
public void setInputStream(InputStream inputStream) {
this.inputStream = inputStream;
}
}
JS:
function downLoad123(){
var strName = encodeURI(encodeURI('下载测试手册.doc'));
var downUrl = root+'/basicSettings/downloadFileAction?fileName='+strName+'';
$('#aaaa').attr('href',downUrl)
}
jsp:
<a href="#" id="aaaa" οnclick="downLoad123();">下载</a>