欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

struts的文件下载

程序员文章站 2022-05-30 22:12:11
...

①、先写一个展示文件的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>

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

struts的文件下载

 

 

 

 

 

 

 

 

 

 

 

相关标签: struts 文件下载