码迷,mamicode.com
首页 > Web开发 > 详细

Struts2 实现文件上传和下载

时间:2016-09-05 13:36:50      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

实现上传功能

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>

 

Struts2 实现文件上传和下载

标签:

原文地址:http://www.cnblogs.com/cnsdhzzl/p/5841805.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!