zoukankan      html  css  js  c++  java
  • struts 文件下载

    文件下载步骤:

    (1)获取要下载的文件的文件名称.对其进行编码处理,由于文件上传默认是get提交

    (2)文件下载提交的业务方法

    (3)返回文件流的方法

    (4)下载显示的文件名称

    文件下载列表:

    <body>
        <table border="1">
        <tr>
      			<td>编号</td>
      			<td>文件名称</td>
      			<td>操作</td>
      		</tr>
        	<c:forEach items="${fileNames}" var="fileName" varStatus="v">
    	    	<tr>
    	    		<td>${v.count}</td>
    	    		<td>${fileName}</td>
    	    		<td>
    	    			<c:url var="url" value="down_down">
    	    				<c:param name="fileName" value="${fileName }"></c:param>
    	    			</c:url>
    	    			<a href="${url}">下载</a>
    	    		</td>
    	    	</tr>
        	</c:forEach>
        </table>


    文件下载使用到的action类

    package cn.itcast.download;
    
    import java.io.File;
    import java.io.InputStream;
    import java.io.UnsupportedEncodingException;
    import java.net.URLEncoder;
    
    import javax.servlet.http.HttpServletRequest;
    
    import org.apache.struts2.ServletActionContext;
    
    import com.opensymphony.xwork2.ActionSupport;
    public class DownloadAction extends ActionSupport{
    	public String list(){
    		//得到目标中的文件
    		String path = ServletActionContext.getServletContext().getRealPath("/upload");
    		File file=new File(path);
    		String[] fileNames = file.list();
    		HttpServletRequest request = ServletActionContext.getRequest();
    		request.setAttribute("fileNames", fileNames);
    		return "list";
    	}
    	//文件下载的步骤
    	//1.获取要下载的文件的文件名称
    	private String fileName;
    	public void setFileName(String fileName) {
    		//处理传入的參数中文问题(默认是get提交)
    		try {
    			fileName=new String(fileName.getBytes("ISO8859-1"),"UTF-8");
    		} catch (UnsupportedEncodingException e) {
    			throw new RuntimeException(e);
    		}
    		this.fileName = fileName;
    	}
    	//2.下载提交的业务方法
    	public String down(){
    		return "download";
    	}
    	//3.返回文件流的方法
    	public InputStream getAttrInputStream(){
    		return ServletActionContext.getServletContext().getResourceAsStream("/upload/"+fileName);
    	}
    	//4.下载显示的文件名称
    	public String getDownFileName(){
    		try {
    			fileName=URLEncoder.encode(fileName,"utf-8");
    		} catch (UnsupportedEncodingException e) {
    			throw new RuntimeException(e);
    		}
    		return fileName;
    	}
    }<strong>
    </strong>
    struts配置文件:要和action类中的方法名相应

    <struts>
    	<package name="down" namespace="/" extends="struts-default">
    		<action name="down_*" class="cn.itcast.download.DownloadAction" method="{1}">
    			<result name="list">/{1}.jsp</result>
    			<result name="download" type="stream">
    			
    				<!-- 执行下载的文件的类型:指定为全部的二进制文件类型 -->
    			   <param name="contentType">application/octet-stream</param>
    			   
    			   <!-- 相应的是Action中属性: 返回流的属性【事实上就是getAttrInputStream()】 -->
    			   <param name="inputName">attrInputStream</param>
    			   
    			   <!-- 下载头,包含:浏览器显示的文件名称 -->
    			   <param name="contentDisposition">attachment;filename=${downFileName}</param>
    			 
    			 	<!-- 缓冲区大小设置 -->
    			   <param name="bufferSize">1024</param>
    			</result>
    		</action>
    		
    	</package>
    </struts>



  • 相关阅读:
    Unable To Open Database After ASM Upgrade From Release 11.1 To Release 11.2
    11g Understanding Automatic Diagnostic Repository.
    How to perform Rolling UpgradeDowngrade in 11g ASM
    Oracle 11.2.0.2 Patch 说明
    Pattern Matching Metacharacters For asm_diskstring
    Steps To MigrateMove a Database From NonASM to ASM And ViceVersa
    Upgrading ASM instance from Oracle 10.1 to Oracle 10.2. (Single Instance)
    OCSSD.BIN Process is Running in a NonRAC Environment
    Steps To MigrateMove a Database From NonASM to ASM And ViceVersa
    On RAC, expdp Removes the Service Name [ID 1269319.1]
  • 原文地址:https://www.cnblogs.com/yfceshi/p/7145329.html
Copyright © 2011-2022 走看看