public class UploadAction extends ActionSupport implements ServletContextAware{
//文件下载属性
private ServletContext context;
private String filename;
private String mimeType;
private InputStream inStream;
public String getFilename() {
try {
return new String(filename.getBytes(),"ISO8859-1");
} catch (UnsupportedEncodingException e) {
System.out.println("fail");
return this.filename;
}
}
public void setFilename(String filename) {
try {
filename= new String(filename.getBytes("ISO-8859-1"),"UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
this.filename = filename;
}
public String getMimeType() {
return mimeType;
}
public void setMimeType(String mimeType) {
this.mimeType = mimeType;
}
public void setInStream(InputStream inStream) {
this.inStream = inStream;
}
//*****************************************************
//文件下载
public String download() throws Exception {
mimeType = context.getMimeType(filename);
System.out.println(mimeType);
return SUCCESS;
}
public InputStream getInStream() throws FileNotFoundException {
File file = new File("C://Program Files//Apache Software Foundation//download",filename);
System.out.println(file);
//inStream = context.getResourceAsStream(/download/+filename);
inStream =new FileInputStream(file);
System.err.println(filename+"77777777777777");
if(inStream == null){
System.out.println("下载");
}
return inStream;
}
@Override
public void setServletContext(ServletContext context) {
this.context = context;
}
//******************下载结束*************************************
struts.xml
<!-- 下载 -->
<action name="download" class="uploadAction" method="download">
<result type="stream">
<param name="contentType">${mimeType};charset=ISO8859-1</param>
<param name="inputName">inStream</param>
<param name="contentDisposition">attachment;filename="${filename}"</param>
</result>
</action>
请求路径http://localhost:8888/honesty/download/download.action?filename=具体文件名