`
zy116494718
  • 浏览: 472661 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts2文件上传与下载

阅读更多

Struts2下载:

 

struts.xml:

<action name="case_exportCases"  class="simsCaseinfoAction" method="exportCases">
   <param name="sessionGroup">cases</param>
   <result name="success" type="stream">
   <param name="contentType">text/plain</param>
             <param name="inputName">inputStream</param>  
             <param name="contentDisposition">attachment;filename="sims.sql"</param>
             <param name="bufferSize">4000</param>
   </result>
  </action>

 

 

 

参数含义:

contentType

内容类型,和互联网MIME标准中的规定类型一致,例如text/plain代表纯文本,text/xml表示XML,image/gif代表GIF图片,image/jpeg代表JPG图片

inputName

下载文件的来源流,对应着action类中某个类型为Inputstream的属性名,例如取值为inputStream 的属性需要编写getInputStream()方法

contentDisposition

文件下载的处理方式,包括内联(inline)和附件(attachment)两种方式,而附件方式会弹出文件保存对话框,否则浏览器会尝试直接显示文件。取值为:

attachment;filename="struts2.txt" ,表示文件下载的时候保存的名字应为struts2.txt 。如果直接写filename="struts2.txt" ,那么默认情况是代表inline ,浏览器会尝试自动打开它,等价于这样的写法:inline; filename="struts2.txt"

bufferSize

下载缓冲区的大小

 

Action:

 

public class SimsCaseinfoAction extends BaseEditAction{

private InputStream inputStream;  //这里与XML里配置的inputName相对应

public FileInputStream getInputStream()  throws IOException {


  return new java.io.FileInputStream("D:\\apache6-working\\webapps\\sims\\sims.sql");//从系统磁盘文件读取数据 

  
}

 public String exportCases() throws Exception {    
       
        return SUCCESS;    
  
    } 

}

 

 

Struts2上传:

 

   Action:

 

public class SimsCaseinfoAction extends BaseEditAction{ 
     private static final int BUFFER_SIZE = 16 * 1024 ;
     private File clientFile;
     private String clientFileFileName;     //struts2默认可以获得文件名和文件类型,格式为xxxFileName,xxxContentType
     private String clientFileContentType;

public String uploadFile() throws Exception {    
  	  
     //把客户端上传的文件上传到服务器上           
    	 String fileName = this.getClientFileFileName();
    	 File serverFile = new File(ServletActionContext.getServletContext().getRealPath("/import") + "/" + fileName);
    	 String flag = "";
    	 String str =  fileName.substring(fileName.indexOf(".")+1);
    	 if(!str.equals("sql")){
    		 
    		 getRequest().setAttribute("message", "error");
    		 return SUCCESS;
    	 }
    	 copy(clientFile, serverFile); 
    }
    
	private static void copy(File src, File dst)  {
        try  {
           InputStream in = null ;
           OutputStream out = null ;
            try  {                
               in = new BufferedInputStream( new FileInputStream(src), BUFFER_SIZE);
               out = new BufferedOutputStream( new FileOutputStream(dst), BUFFER_SIZE);
                byte [] buffer = new byte [BUFFER_SIZE];
                while (in.read(buffer) > 0 )  {
                   out.write(buffer);
               } 
            } finally  {
                if ( null != in)  {
                   in.close();
               } 
                 if ( null != out)  {
                   out.close();
               } 
           } 
        } catch (Exception e)  {
           e.printStackTrace();
       } 
   } 
	public File getClientFile() {
		return clientFile;
	}

	public void setClientFile(File clientFile) {
		this.clientFile = clientFile;
	}

	public String getClientFileFileName() {
		return clientFileFileName;
	}

	public void setClientFileFileName(String clientFileFileName) {
		this.clientFileFileName = clientFileFileName;
	}

	public String getClientFileContentType() {
		return clientFileContentType;
	}

	public void setClientFileContentType(String clientFileContentType) {
		this.clientFileContentType = clientFileContentType;
	}

  

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics