Struts2框架之文件下载

版权声明:本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_41855420/article/details/102748930

在上一篇博客 Struts2框架之文件上传 介绍了在struts框架中如何进行文件上传,下面将介绍如何使用struts框架进行文件的下载。

在不使用struts框架时,我们也可以通过servlet进行文件下载(参考:Java Web通过Servlet实现文件下载)。这种方式我们还需要进行文件流操作,而使用struts框架后,这些操作都可以有框架操作。

第1步:创建download动作。

package cn.hestyle.web.action;

import com.opensymphony.xwork2.ActionSupport;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;

public class DownloadAction extends ActionSupport {
    private InputStream inputStream;
    //需要实现inputStream的getter、setter方法
    public InputStream getInputStream() {
        return inputStream;
    }

    public void setInputStream(InputStream inputStream) {
        this.inputStream = inputStream;
    }

    public String download() throws FileNotFoundException {
        //对inputStream进行赋值
        File file = new File("/Users/hestyle/Desktop/动漫照片.jpg");
        inputStream = new FileInputStream(file);
        return "success";
    }
}

第2步:在struts.xml文件中配置inputStream

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

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

<struts>
    <package name="p1" extends="struts-default">
        <action name="download" class="cn.hestyle.web.action.DownloadAction" method="download">
            <!-- 配置成功视图 -->
            <result name="success" type="stream">
                <!-- 配置输出流 -->
                <param name="inputStream">inputStream</param>
                <!-- 以附件的方式传递 -->
                <param name="contentDisposition">attachment;filename=image.jpg</param>
                <param name="contentType">application/octet-stream</param>
            </result>
        </action>
    </package>
</struts>

第3步:在浏览器访问download动作

在这里插入图片描述在这里插入图片描述

扩展:动态设置文件名

在上面我们把文件名写死了,其实也可以动态设置。
修改DownloadAction动作,添加fileNamegetFileName方法属性,并且将fileName进行URL转码(防止中文乱码)。

package cn.hestyle.web.action;

import com.opensymphony.xwork2.ActionSupport;

import java.io.*;
import java.net.URLEncoder;

public class DownloadAction extends ActionSupport {
    private InputStream inputStream;
    private String fileName;

    //需要实现inputStream的getter、setter方法
    public InputStream getInputStream() {
        return inputStream;
    }

    public void setInputStream(InputStream inputStream) {
        this.inputStream = inputStream;
    }
    //需要实现fileName的getter、setter方法
    public String getFileName() {
        return fileName;
    }

    public void setFileName(String fileName) {
        this.fileName = fileName;
    }

    public String download() throws FileNotFoundException, UnsupportedEncodingException {
        //对inputStream进行赋值
        File file = new File("/Users/hestyle/Desktop/动漫照片.jpg");
        fileName = file.getName();
        //进行url转码,放置前端出现中文乱码的情况
        fileName = URLEncoder.encode(fileName, "utf-8");
        inputStream = new FileInputStream(file);
        return "success";
    }
}

修改配置文件
在这里插入图片描述
浏览器访问download动作。
在这里插入图片描述在这里插入图片描述以上就是Struts2框架之文件下载的主要内容,感谢各位道友的阅读,顺带给个关注,点个赞呗~

猜你喜欢

转载自blog.csdn.net/qq_41855420/article/details/102748930