struts的文件下载

①、先写一个展示文件的action(里面有收集文件的数组和获取文件的方法)
 

public class TeatAction extends ActionSupport{

	public File[] getFs() {
		return fs;
	}

	public void setFs(File[] fs) {
		this.fs = fs;
	}
    //用来装获取到的文件
	private File[] fs;

	public String list(){
		//取得文件保存路径
		String path=ServletActionContext.getRequest().getRealPath("\\image");
		File f=new File(path);
		//获取目录下保存的文件
		fs=f.listFiles();
		return "list";
	}
}

②、下载文件的action(里面必须有一个文件名字的属性和一个获取字节输入流的方法)

public class DownloadAction extends ActionSupport{
	//自动获得字节输入流(get、set方法不能少)
	private InputStream inputStream;
	
	public InputStream getInputStream() {
		return inputStream;
	}

	public void setInputStream(InputStream inputStream) {
		this.inputStream = inputStream;
	}

    
	private String fileName;
	
	public void setFileName(String fileName) throws UnsupportedEncodingException {
		//处理get请求中文乱码
		this.fileName = new String(fileName.getBytes("iso8859-1"),"utf-8");
	}
	
	public String getFileName() {
		return fileName;
	}	
	
	public InputStream  getDownloadFile() throws Exception{
        //第一种方法,返回缓存字节输入流
		//InputStream is = new BufferedInputStream(inputStream);
		//return is;
        //第二种方法,返回缓存字节输入流
		return new BufferedInputStream(ServletActionContext.getServletContext().getResourceAsStream("/image/" + fileName));
	}

	
}

③、struts的配置

<struts>
    	<package name="default" namespace="/" extends="struts-default">
    	
    		<action name="testAction_*" class="com.xb.action.TeatAction" method="{1}">
    			<result name="list">Load.jsp</result>
    		</action>

    		<!-- 这个action不需要写执行方法 -->
    		<action name="download" class="com.xb.action.DownloadAction">
    		<result type="stream">
					<!-- 下载的文件数据存放的方法,该方法返回一个InputStream
					例如取值为inputStream的属性需要编写getInputStream()方法-->  
					<param name="inputName">downloadFile</param>
					<!--下载时,客户端显示的下载的文件名 -->
					<param name="contentDisposition"> attachment; filename=${fileName}</param>
					<!-- 数据的缓冲大小 -->
					<param name="bufferSize">1024</param>
				</result>
    		</action>

    	</package>
    </struts>

④、页面展示(jsp展示页面)

<s:iterator begin="0" end="fs.length-1" id="num">
   	<s:property value="fs[#num].getName()"/>
    <a href="download.action?fileName=<s:property value="fs[#num].getName()"/>">下载</a>                
    <br>
</s:iterator>

这样就可以实现文件的下载了....

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值