文件上傳的第三種方式

使用Struts2實現文件的上傳與下載apache

1:上傳app

Jsp代碼:jsp

<s:form action="updown" method="post" enctype="multipart/form-data">ide

                          上傳文件:<input type="file" name="upload"><br>post

Action代碼:this

 public class UpDownAction extends ActionSupport {spa

  private File upload;//與前臺上傳的文件名稱一致orm

  private String uploadContentType;// 前綴必須是uploadxml

  private String result;ip

  private String uploadFileName;//必須注意後綴必須是FileName,前綴必須是upload

 

  public String getUploadFileName() {

     return uploadFileName;

  }

  public void setUploadFileName(String uploadFileName) {

     this.uploadFileName = uploadFileName;

  }

  public String getResult() {

     return result;

  }

  public void setResult(String result) {

     this.result = result;

  }

  public File getUpload() {

     return upload;

  }

  public void setUpload(File upload) {

     this.upload = upload;

  }

  public String getUploadContentType() {

     return uploadContentType;

  }

  public void setUploadContentType(String uploadContentType) {

     this.uploadContentType = uploadContentType;

  }

 

  @Override

  public String execute() throws Exception {

      //獲取上傳文件路徑

     System.out.println(upload);

     String path=ServletActionContext.getServletContext().getRealPath("/images");

     File files=new File(path);

     System.out.println("fdad"+files);

     //判斷文件路徑是否存在,不存在則建立

     if(!files.exists()){

       files.mkdir();

     }

     //upload源文件的名稱

     //upfileName與建立的名稱保持一致

     FileUtils.copyFile(upload, new File(files,uploadFileName));

     result="上傳成功";

     return "ok";

  }

 

 

}

 

Struts.xml配置

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">

<struts>

<constant name="struts.enable.DynamicMethodInvocation" value="false" />

       <constant name="struts.devMode" value="true" />

       <constant name="struts.multipart.saveDir" value="/tmp"></constant>

       <package name="default" namespace="/" extends="struts-default">

       <action name="updown" class="com.soft. UpDownAction ">

       <result name="ok" >up.jsp</result>

<!-- 配置攔截器限制上傳文件類型及大小 -->

            <interceptor-ref name="fileUpload">

              <param name="allowedTypes">image/bmp,image/x-png,image/gif,image/jpeg</param>

              <param name="maximumSize">5M</param>

            </interceptor-ref>

            <interceptor-ref name="defaultStack"></interceptor-ref>

      </action> 

    </package>

 </struts>   

 

文件的下載:

Jsp代碼:

<a href=」down?filename=4.jpg」>下載</a>

Action代碼(命名要與struts.xml保持一致,不然怎是不成功)

public class Downfile extends ActionSupport {

 

  public String inputPath;

  public String filename;

   

  public String getFilename() {

     return filename;

  }

 

  public void setFilename(String filename) {

     this.filename = filename;

  }

 

  public String getInputPath() {

     return inputPath;

  }

 

  public void setInputPath(String inputPath) {

     this.inputPath = inputPath;

  }

   @Override

public String execute() throws Exception {

  // TODO Auto-generated method stub

     System.out.println(inputPath);

  return "hi";

}

  

 

 

 

 

 

public class Downfile extends ActionSupport {

 

  public String inputPath;//struts.xm保持一致

  public String filename;

   

  public String getFilename() {

     return filename;

  }

 

  public void setFilename(String filename) {

     this.filename = filename;

  }

 

  public String getInputPath() {

     return inputPath;

  }

 

  public void setInputPath(String inputPath) {

     this.inputPath = inputPath;

  }

   @Override

public String execute() throws Exception {

  // TODO Auto-generated method stub

     System.out.println(inputPath);

  return "hi";

}

  

   public InputStream getInputStream() throws IOException{

     //return ServletActionContext.getServletContext().getResourceAsStream(inputPath);

        String path=ServletActionContext.getServletContext().getRealPath("/images");

     String filepath=path+"\\"+filename;

        File file=new File(filepath);

        return  FileUtils.openInputStream(file);

   }

   public String getDownloadFileName(){

     return "a.jpg";

   }

}

struts.xml配置:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">

<struts>

<constant name="struts.enable.DynamicMethodInvocation" value="false" />

       <constant name="struts.devMode" value="true" />

       <constant name="struts.multipart.saveDir" value="/tmp"></constant>

       <package name="default" namespace="/" extends="struts-default">

       <action name="down" class="com.soft.Downfile">

       <result name="hi" type="stream"></result>//必須寫type,不然沒法下載

       <param name="inputPath">/images/4.jpg</param>

       <param name="contentType">application/octet-stream</param>

       <param name="inputName">inputStream</param>

       <param name="contentDisposition">attachment;filename="${downloadFileName}"</param>

       <param name="bufferSize">10000</param>

     

      </action> 

    </package>

 </struts>

相關文章
相關標籤/搜索