struts 2 파일 다운로드 전체 버 전

12141 단어 46_struts2
         Struts 2       。  
        struts2hello,         MyEclipse 6,       IDE     ,
           ,                。        :
[url]http://beansoft.java-cn.org/myeclipse_doc_cn/struts2_demo.pdf[/url],       
      Struts 2    。  

        ,     struts.xml        :  

  
  
  
	  
		  
		  
		  
			  
				text/plain  
				inputStream  
				attachment;filename="struts2  .txt"  
				4096  
			  
		  
		  
		  
		  
			  
			Struts    .txt  
			  
				text/plain  
				inputStream  
				  
				attachment;filename="${downloadFileName}"  
				4096  
			  
		  
		  
		  
		  
		   
			/download/    .doc  
			  
			    .doc  
			  
				application/octet-stream;charset=ISO8859-1  
				inputStream  
				  
				attachment;filename="${downloadFileName}"  
				4096  
			  
		  
		  
	  
  

Struts 2             ,              HTTP   ,               。
      ,                 ,           ,  :다운로드 하 다.
file1.zip,                ,        。        ,           ,
           ,             。            ,      URL       
  %3457...。            :[url]http://localhost:8080/struts2hello/download/[/url]    .doc,
Tomcat            404  :HTTP Status 404 - /struts2hello/download/?μí3?μ?÷.doc。       
     Struts 2             ,       JSP          ,            
  。         ,             ,          EXCEL,PDF,       。   
               ,      ,               。  

      ,       Action    ,         InputStream    ,             
  ,                  ,          ,           。         
       ,       InputStream  。             :public InputStream getInputStream()
throws Exception,           ,  getDownloadFile()。  ,                Action
 example.FileDownloadAction         :  

package example;  
import java.io.ByteArrayInputStream;  
import java.io.InputStream;  
import com.opensymphony.xwork2.Action;  
public class FileDownloadAction implements Action {  
	public InputStream getInputStream() throws Exception {  
		return new ByteArrayInputStream("Struts 2     ".getBytes());  
	}  
	public String execute() throws Exception {  
		return SUCCESS;  
	}  
}  

。             getInputStream(),                                
         。               :  
return new java.io.FileInputStream(“c:\\test.txt”);//             
        。  

        ,   struts.xml  action    ,         : 

  
  
	  
		text/plain  
		inputStream  
		attachment;filename="struts2.txt"  
		4096  
	  
  

  action       result       (stream),  stream      ,                ,
      location  ,     inputName  ,             ,   Action       ,   
InputStream。                  :  

     :

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:  
        。    ,contentType   contentDisposition     HTTP     Content-Type Content-disposition 。
 ,          ,             :[url]http://localhost:8080/struts2hello/download.action[/url],   
               。  
  
 
                   HTTP ,        : 

HTTP/1.1 200 OK  
Server: Apache-Coyote/1.1  
Content-disposition: attachment;filename="struts2.txt"  
Content-Type: text/plain  
Transfer-Encoding: chunked  
Date: Sun, 02 Mar 2008 02:58:25 GMT 

       action   ,            :contentType contentDisposition。  contentType   ,        
  ,                ,  .bean  ,     action           ,                ,
              :application/octet-stream;charset=ISO8859-1 ,       charset,              
  ;            application/x-download,       ,         ,                   。
 contentDisposition,      filename="struts2.txt",   inline; filename="struts2.txt",                
     :Struts 2     ,                    。                     ,     
 attachment;filename="struts2.txt",    attachment;      。  

  ,           ,      。       ,                 。      ,         ,
                  。        filename     filename=”struts2  .txt”       , ,    ,
 contentDisposition   : 

attachment;filename="struts2  .txt"  

          ,       ,  12.13  。 ,        !IE            ,     download_action
  。Firefox   ,         ,     ,     struts2--txt           struts2  .txt。   ?   
   ,    ISO8859-1           ,    12.8        JSP            (       Weblogic  )
    ,      ,                 Servlet       。   Java  ,       :  
  
String downFileName = new String(“struts2  .txt”.getBytes(), "ISO8859-1"); 

             XML      ,         struts2??.txt,          XML      。  ,     
   ,   Action           ,        ,    get  。  ,  12.3.8  Action    (param)    
  ,             action      ,   ,        param        :${   },      action 
          。  ,                FileDownloadAction2   :

package example;  
import java.io.ByteArrayInputStream;  
import java.io.InputStream;  
import java.io.UnsupportedEncodingException;  
import com.opensymphony.xwork2.Action;  
public class FileDownloadAction2 implements Action {  
	private String fileName;//      param          
	public InputStream getInputStream() throws Exception {  
		return new ByteArrayInputStream("Struts 2     ".getBytes());  
	}  
	public String execute() throws Exception {  
		return SUCCESS;  
	}  
	public void setFileName(String fileName) {  
		this.fileName = fileName;  
	}  
	/**                  */  
	public String getDownloadFileName() {  
		String downFileName = fileName;  
	try {  
		downFileName = new String(downFileName.getBytes(), "ISO8859-1");  
	} catch (UnsupportedEncodingException e) {  
		e.printStackTrace();  
	}  
		return downFileName;  
	}  
} 

        ,    fileName,             ;           getDownloadFileName()         
downloadFileName,     fileName     ,         ISO8859        。  
           action ,         ,        action,  download2,      : 

  
  
	  
	Struts    .txt  
	  
		text/plain  
		inputStream  
		  
		attachment;filename="${downloadFileName}"  
		4096  
	  
  

。         ${downloadFileName},             action              ${}     ,       
   +action. getDownloadFileName()。 

  ,                 ,    :  
[url]http://localhost:8080/struts2hello/download2.action[/url]     ,            。
  
        ,                  Web             。                       
  ,  WebRoot/download,       ,            .doc   ,       action           。    
         ,                   , word               ,       word        
  。              Action ,  example. FileDownloadAction3,          :  

package example;  
import java.io.InputStream;  
import java.io.UnsupportedEncodingException;  
import org.apache.struts2.ServletActionContext;  
import com.opensymphony.xwork2.Action;  
public class FileDownloadAction3 implements Action {  
	private String fileName;//      param          
	private String inputPath;//              
	public InputStream getInputStream() throws Exception {  
		//    ServletContext,   application        
		return ServletActionContext.getServletContext().getResourceAsStream(inputPath);  
	}  
	public String execute() throws Exception {  
		return SUCCESS;  
	}  
	public void setInputPath(String value) {  
		inputPath = value;  
	}  
	public void setFileName(String fileName) {  
		this.fileName = fileName;  
	}  
	/**                  */  
	public String getDownloadFileName() {  
		String downFileName = fileName;  
	try {  
		downFileName = new String(downFileName.getBytes(), "ISO8859-1");  
	} catch (UnsupportedEncodingException e) {  
		e.printStackTrace();  
	}  
		return downFileName;  
	}  
}  

                       。           inputPath   ,            。    ServletActionContext
.getServletContext()    ,        12.6     ,                Servlet   ServletContext,        jsp
  application  ,             。  
         action,        download2      ,                 。     struts.xml       action  : 

  
  
		/download/    .doc  
		  
		    .doc  
	  
		application/octet-stream;charset=ISO8859-1  
		inputStream  
		  
		attachment;filename="${downloadFileName}"  
		4096  
	  
  
。        ,               ,inputPath,       contentType      。           ,        :
[url]http://localhost:8080/struts2hello/download3.action[/url] 。  ,           ,      .doc   word   ,    。  
  :                  ,         Struts 2  ,                    :
[url]http://localhost:8080/struts2hello/download3.action?inputPath=/WEB-INF/web.xml[/url],                      web.xml
       ,                 JSP     。             。         ,                ,
   Action     inputPath       ,             :  

public void setInputPath(String value) {  
	inputPath = value;  
} 

           download3.action?fileid=1            。   ,     execute()         ,          download
       ,     ,          。  ,          execute()      ,    : 

public String execute() throws Exception {  
	//           
	String downloadDir = ServletActionContext.getServletContext().getRealPath("/download");  
	//         
	String downloadFile = ServletActionContext.getServletContext().getRealPath(inputPath);  
	java.io.File file = new java.io.File(downloadFile);  
	downloadFile = file.getCanonicalPath();//       ,     ..     
	//          /download     ,         
	if(!downloadFile.startsWith(downloadDir)) {  
		return null;  
	}  
	return SUCCESS;  
} 

             web.xml   ,          ,           /download      。


좋은 웹페이지 즐겨찾기