Struts2 实现文件上传和下载

实现上传功能

1.首先你应该有一个上传页面

<!-- file的name属性与action中的File类型属性保持一致,用于封装File控件对应的文件内容 -->
        <s:file name="upload" label="选择文件"></s:file>

2.然后创建一个文件上传的XXXaction

public class UploadAction extends ActionSupport implements ModelDriven<File> {

    // 封装上传文件属性
    private File upload;
    // 封装上传文件的类型
    private String uploadContentType;
    // 封装生成文件名称
    private String uploadFileName;
    // 获取文件上传的路径
    private String savePath;

    @Override
    public String execute() throws Exception {
        // 准备一个byte数组
        byte[] buffer = new byte[1024];
        // 读取文件
        FileInputStream fis = new FileInputStream(getUpload());
        // 保存文件,并设置保存目录路径
        FileOutputStream fos = new FileOutputStream(getSavePath() + "\\"
                + this.getUploadFileName());
        int length = fis.read(buffer);
        // 循环写入
        while (length > 0) {
            // 每次写入length长度的内容
            fos.write(buffer, 0, length);
            length = fis.read(buffer);
        }
        fis.close();
        fos.flush();
        fos.close();
        return SUCCESS;
    }
   public void setUploadContentType(String uploadContentType) {
        this.uploadContentType = uploadContentType;
    }
  public void setUploadFileName(String uploadFileName) {
        this.uploadFileName = uploadFileName;
    }

    // 获取上传文件的保存路径
    // 通过读取存放目录货的保存路径
    public String getSavePath() {
        return ServletActionContext.getServletContext().getRealPath(savePath);
    }}

3.然后配置Struts.xml

添加上传的action元素

<!-- 上传文件的action -->
        <action name="uploadAction" class="cn.cnsdhzzl.action.UploadAction">
            <!-- 通过param参数设置保存目录的路径 -->
            <param name="savePath">/upload</param>
            <result name="success">uploadSuccess.jsp</result>
        </action>

实现下载功能

1.首先你需要有一个下载链接

<-- 指向下载的action逻辑视图名 -->
<a href="downloadAction?fileName=123.jpg">点击下载</a>

2.创建一个下载XXXaction

public class DownloadAction extends ActionSupport {
    // 读取下载文件的目录
    private String inputPath;
    // 下载文件的文件名
    private String fileName;
    // 下载文件的输入流
    private InputStream inputStream;
    // 下载文件的类型
    private String conetntType;

    @Override
    public String execute() throws Exception {
        return SUCCESS;
    }
public InputStream getInputStream() throws FileNotFoundException {
        String path = ServletActionContext.getServletContext().getRealPath(
                inputPath);
        return new BufferedInputStream(new FileInputStream(path + "\\"
                + fileName));
    }
//省略部分getset
}

3.然后配置Struts.xml

添加下载的action元素

<!-- 下载文件的action -->
        <action name="downloadAction" class="cn.cnsdhzzl.action.DownloadAction">
            <param name="inputPath">/upload</param>
            <result name="success" type="stream">
                <!-- 设置文件类型 -->
                <param name="contentType">application/image/jpeg</param>
                <param name="inputName">inputStream</param>
                <!-- 分为两部分,即设置下载处理方式和设置下载文件显示的文件名 -->
                <param name="contentDisposition">attachment;filename="${fileName}"</param>
                <param name="bufferSize">4096</param>
            </result>
            <result name="error">error.jsp</result>
        </action>
时间: 2024-08-28 05:34:33

Struts2 实现文件上传和下载的相关文章

struts2实现文件上传和下载

在做B/S系统时,通常会涉及到上传文件和下载文件,在没接struts2框架之前,我们都是使用apache下面的commons子项目的FileUpload组件来进行文件的上传,但是那样做的话,代码看起来比较繁琐,而且不灵活,在学习了struts2后,struts2为文件上传下载提供了更好的实现机制,在这里我分别就单文件上传和多文件上传的源代码进行一下讲解,这里需要导入文件下载上传的两个jar文件,一个是commons-fileupload-1.2.2.jar,另一个是commons-io-2.0.

7、Struts2实现文件上传和下载

一.实现单个文件上传 1.创建如下web项目结构 2.在src下的com.action包下创建UploadAction.java 1 package com.action; 2 import java.io.File; 3 4 import javax.servlet.ServletContext; 5 6 import org.apache.commons.io.FileUtils; 7 import org.apache.struts2.ServletActionContext; 8 9 i

Struts2入门(七)——Struts2的文件上传和下载

一.前言 在之前的随笔之中,我们已经了解Java通过上传组件来实现上传和下载,这次我们来了解Struts2的上传和下载. 注意:文件上传时,我们需要将表单提交方式设置为"POST"方式,并且将enctype属性设置为"multipart/form-data",该属性的默认值为"application/x-www-form-urlencoded",就是说,表单要写成以下这种形式: <form action="" metho

struts2(六) 文件上传和下载

前面对文件下载提过一点点,这里正好要讲文件上传,就放在一起在说一遍. --WH 一.单文件上传 在没学struts2之前,我们要写文件上传,非常麻烦,需要手动一步步去获取表单中的各种属性,然后在进行相应的处理,而在struts2中就不需要了,因为有一个fileUpload拦截器帮我们全做完了.我们只需要添加一点点信息,就可以完成上传的功能. 1.Action中需要提供三个属性 File fieldName: //文件表单项名称,也就是上传控件所填写的name属性名 String fileCont

struts2中的文件上传和下载

天下大事,必做于细.天下难事,必作于易. 曾经见过某些人,基础的知识还不扎实就去学习更难的事,这样必然在学习新的知识会很迷惑结果 再回来重新学习一下没有搞懂的知识,这必然会导致学习效率的下降!我写的这篇上传和下载都很基础. 十分适合初学者! jsp:页面 <!--在进行文件上传时,表单提交方式一定要是post的方式,因为文件上传时二进制文件可能会很大,还有就是enctype属性,这个属性一定要写成multipart/form-data, 不然就会以二进制文本上传到服务器端--> <for

Struts2文件上传与下载

一,页面 index.html 在页面中最重要的就是这个文件上传用的 form 表单,注意这里一定要把 form 的encyType属性明确标定为“multipart/form-data”,只有这样.表单才可能以二进制的形式上传到服务器. <form action = "<%=contextPath%>/file/uploadImage.action" encytype="multipart/form-data"> <input typ

Struts2学习总结——文件上传与下载

Struts2文件上传与下载 1.1.1新建一个Maven项目(demo02) 在此添加Web构面以及 struts2 构面 1.2.1配置Maven依赖(pom.xml 文件) <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20

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

在做B/S系统时,通常会涉及到上传文件和下载文件,在没接struts2框架之前,我们都是使用apache下面的commons子项目的FileUpload组件来进行文件的上传,但是那样做的话,代码看起来比较繁琐,而且不灵活,在学习了struts2后,struts2为文件上传下载提供了更好的实现机制,在这里我分别就单文件上传和多文件上传的实现进行一下讲解,这里 我们使用的struts2 web项目所导入的jar包中的**commons-fileupload-1.3.1.jar commons-io-

struts2 实现文件上传下载 (下载支持中文文件名)代码

struts2 实现文件上传: Action 代码: package com.action; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import org.apache.struts2.ServletActionContext; import com.o