文件上传的第三种方式

使用Struts2实现文件的上传与下载

1:上传

Jsp代码:

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

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

Action代码:

 public class UpDownAction extends ActionSupport {

  private File upload;//与前台上传的文件名称一致

  private String uploadContentType;// 前缀必须是upload

  private String result;

  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>   

 

转载于:https://my.oschina.net/u/2511906/blog/598861

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值