package com.lgh.action.admin;
import java.io.File;
import java.io.InputStream;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Namespaces;
import org.apache.struts2.convention.annotation.Result;
@Namespaces( { @Namespace(value = "/admin") })
public class DownloadAction extends ActionSupport {
private String fileName;// 初始的通过param指定的文件名属性
public InputStream getInputStream() throws Exception {
InputStream inputstream = ServletActionContext.getServletContext().getResourceAsStream("/" + fileName);
return inputstream;
}
@Action(value = "/downloadFile", results = { @Result(type = "stream", params = { "contentType", "application/octet-stream;charset=ISO8859-1", "inputName",
"inputStream", "contentDisposition", "p_w_upload;filename=${downloadFileName}", "bufferSize", "4096" }, name = "download")})
public String downloadFile() throws Exception {
return "download";
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
/** 提供转换编码后的供下载用的文件名 */
public String getDownloadFileName() {
String downFileName = fileName;
try {
downFileName = java.net.URLEncoder.encode(downFileName, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return downFileName;
}
}
jsp页面调用
function download(fileName){
if(fileName == ''){
alert('下载文件已不存在');
return false;
}
var downUrl = '${basePath?default("../")}admin/downloadFile?fileName=' + fileName;
open(encodeURI(downUrl));
}
<a href="#" οnclick=download("这里是文件名称如“test.zip”")>下载</a>
//参考网站
http://www.wsria.com/archives/1172
转载于:https://blog.51cto.com/lghclub/652051