java通过struts实现web中的文件下载(1)
- UID
- 1066743
|
java通过struts实现web中的文件下载(1)
java通过struts实现web中的文件上传
本篇记录下载功能
定义一个Action类,FileDownload.java
package com.struts2.filedownload;
import java.io.InputStream;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
//文件下载
public class FileDownload extends ActionSupport{
private int number ;
private String fileName;
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
//返回一个输入流,作为一个客户端来说是一个输入流,但对于服务器端是一个 输出流
public InputStream getDownloadFile() throws Exception
{
if(1 == number)
{
this.fileName = "Dream.jpg" ;
//获取资源路径
return ServletActionContext.getServletContext().getResourceAsStream("upload/Dream.jpg") ;
}
else if(2 == number)
{
this.fileName = "jd2chm源码生成chm格式文档.rar" ;
//解解乱码
this.fileName = new String(this.fileName.getBytes("GBK"),"ISO-8859-1");
return ServletActionContext.getServletContext().getResourceAsStream("upload/jd2chm源码生成chm格式文档.rar") ;
}
else
return null ;
}
@Override
public String execute() throws Exception {
return SUCCESS;
}
}
这里要注意路径问题 如果不知道怎么用getResourceAsStream的路径的话 可以用以下这种方法
/upload/jd2chm源码生成chm格式文档.rar 为绝对路径
File file = new File("/upload/jd2chm源码生成chm格式文档.rar");
InputStream is = new FileInputStream(file);
return is;
否则会报错
Can not find a java.io.InputStream with the name [downloadFile]
在struts.xml文件中配置相关信息
<struts>
<package name="struts2" extends="struts-default">
<action name="FileDownload" class="com.struts2.filedownload.FileDownload">
<result name="success" type="stream">
<param name="contentType">text/plain</param>
<param name="contentDisposition">attachment;fileName="${fileName}"</param>
<param name="inputName">downloadFile</param>
<param name="bufferSize">1024</param>
</result>
</action>
</package>
</struts> |
|
|
|
|
|