struts2的上传与下载

33人阅读 评论(0) 收藏 举报
分类:

struts2文件的上传

1.struts文件上传
// 首先在struts.xml配置文件中修改上传文件的大小(52428800表示50M)并配置Action类
   <constant name="struts.multipart.maxSize" value="52428800"></constant>   
   <action name="UploadAction_*" class="com.lanou3g.UploadAction" method="{1}">
        <result name="success" type="redirect">/success.jsp</result>
    </action>
   创建Action类实现文件的上传
  public class UploadAction extends ActionSupport{
    // 声明一个file[] 属性(用来接收上传的文件)
    // 注意:命名规范 这个文件数组的名字 为提交的name属性
    private File[] file;
    // 声明一个String[] 数组 属性 用来接受上传文件的名字
    // 注意: 命名规范 name属性名 + FileName
    private String[] fileFileName;


    // 上传动作方法
    // 上传文件 到底这个文件放哪: 上传到你这个应用下的文件夹
    public String upload() {
        /*
         *  1.获取文件上传的路径(真实路径)
         *  2.拼接上传的文件夹路径
         *  3.在服务器上创建上传的文件夹
         *  4.把struts接收到的文件 保存到该路径下
         *  5.结束
         */
        // 获取ServletContext
        ServletContext application = ServletActionContext.getServletContext();
        // 获取真实路径(服务器的硬盘路径) 传入拼接的文件夹地址
        String realPath = application.getRealPath("/upload");
        // 根据路径创建文件夹(判断文件夹不存在 在创建)
        // 用这个路径创建一个file对象
        File f = new File(realPath);
        if (!f.exists()) {
            // 不存在就创建
            f.mkdir();
        }
        // 把struts接收过来的文件 放入该文件夹中
        // 遍历文件数组 取出每一个文件放入
        for (int i = 0; i < file.length; i++) {
            // 取出每一个文件放入
            File tempFile = file[i];
            // 取出每一个对应的文件名
            String tempFileName = fileFileName[i];
            // 直接将文件重新命名renameTo(把文件改个名 剪切过去)
            tempFile.renameTo(new File(realPath,tempFileName));
        }
        /*
         * 查看之前上传的文件的列表
         */
        return SUCCESS;
    }


    // 必须提供set/get方法
    public File[] getFile() {
        return file;
    }
    public void setFile(File[] file) {
        this.file = file;
    }
    public String[] getFileFileName() {
        return fileFileName;
    }
    public void setFileFileName(String[] fileFileName) {
        this.fileFileName = fileFileName;
    }
} 
2.struts2文件下载
 // 同样,也是首先在struts.xml配置文件中配置下载的Action类
 <action name="DownloadAction_*" class="com.lanou3g.DownloadAction" method="{1}">
        <!-- 告诉浏览器 相当于添加响应头 -->
        <!--stream类型 是专门用来下载的-->
        <result name="success" type="stream">
             <!--告诉浏览器 当前数据类型是下载-->
            <param name="contentType">application/octet-stream</param>
            <!--动态获取下载的文件名 ognl表达式 可以动态获取文件名 相当于获取该对象的值-->
            <param name="contentDisposition">attachment;filename=${fileName}</param>
                <!--告诉struts 我们下载的输入流 对象名-->
            <param name="inputName">fileInputStream</param>
        </result>
  </action>

// 创建Action类实现下载
  public class DownloadAction extends ActionSupport{
    // 获取表单传过来的问文件名
    // 这里会出现文件名的中文乱码问题
    // 需要修改fileName的编码格式
    private String fileName;
    // 声明一个读取文件的字节流属性(把流创建出来 其他交给struts)
    // 这个名字没有规范 但是你要告诉struts 你给它的是哪个流
    private InputStream fileInputStream;

    // 下载方法
    public String download() throws FileNotFoundException {
        /*
         * 1.获取用户要下载的文件的真实路径
         * 2.用这个路径初始化这个字节流
         */
        ServletContext application = ServletActionContext.getServletContext();
        String realPath = application.getRealPath("/upload/" + fileName);
        fileInputStream = new FileInputStream(realPath);
        return SUCCESS;
    }

    // 提供set/get方法
    public String getFileName() {
        // 修改编码格式 方法是给struts提供的
        // 当系统调用是修改 编码格式
        try {
            fileName = new String(fileName.getBytes(), "iso-8859-1");
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return fileName;
    }
    public void setFileName(String fileName) {
        this.fileName = fileName;
    }
    public InputStream getFileInputStream() {
        return fileInputStream;
    }
    public void setFileInputStream(InputStream fileInputStream) {
        this.fileInputStream = fileInputStream;
    }
}
查看评论

Struts2学习(八)—文件上传和下载

在做B/S系统时,通常会涉及到上传文件和下载文件,在没接struts2框架之前,我们都是使用apache下面的commons子项目的FileUpload组件来进行文件的上传,但是那样做的话,代码看起来...
  • mingxin95
  • mingxin95
  • 2016-06-27 12:04:12
  • 1375

【Struts2】Struts2学习(6)文件上传和下载

Struts2的文件上传 Struts2没有提供自己的请求解析器,也就是说,Struts2不会自己去处理multipart/form-data请求,它需要调用其他上传框架来解析而简直数据。 Str...
  • u010583599
  • u010583599
  • 2017-06-15 16:20:53
  • 277

七、Struts2之文件上传与下载

一、Struts2文件上传   Struts2的文件上传实现非常简单,只需要简单几步就可完成; 注意: (1)文件上传的struts2标签为: (2)文件上传的前提是表单属性method="...
  • xiazdong
  • xiazdong
  • 2012-02-03 16:59:20
  • 24924

struts2完美实现文件上传和下载

## struts2完美实现文件上传和下载 ##
  • zjl16
  • zjl16
  • 2016-01-14 11:59:08
  • 5060

struts2 实现文件上传和下载

项目目录: web.xml:主要是配好struts2.
  • qiantujava
  • qiantujava
  • 2014-01-13 17:29:05
  • 4325

java struts2 文件上传 支持大文件

  • 2009年10月30日 19:52
  • 6.6MB
  • 下载

基于Struts2大文件分片断点续传

话不多说,直接上代码。 1.java后台 package com.bjhit.eranges.actions.test; import java.io.BufferedReader; impo...
  • kerryzb
  • kerryzb
  • 2016-05-26 12:15:36
  • 1650

struts2拦截器、文件的上传和下载

五、拦截器 1、概述 Struts2的很多核心功能都是由拦截器完成的。 拦截器很好的实现了AOP的编程思想,在动作的执行之前和结果的返回之后,做拦截处理。 2、struts2的默认拦截器栈 ...
  • u014798557
  • u014798557
  • 2014-09-16 00:18:43
  • 1111

struts2教程--实现文件上传下载

Struts2文件上传下载 一、Struts2文件上传 提供 FileUpload 拦截器,用于解析 multipart/form-data 编码格式请求,解析上传文件的内容 fileUploa...
  • sihai12345
  • sihai12345
  • 2017-04-18 17:02:33
  • 760

struts2文件的上传与下载--超出指定文件大小的校验提示

在做B/S架构项目时,经常会遇到文件上传与下载的需求,在struts2框架中帮我们实现的文件上传与下载机制,能够很好地实现项目需求。在使用的时候,需要导入文件上传与下载需要的两个jar,一个是comm...
  • qq_20889581
  • qq_20889581
  • 2016-10-17 15:53:09
  • 619
    个人资料
    持之以恒
    等级:
    访问量: 2665
    积分: 625
    排名: 7万+
    文章存档
    最新评论