首页 > 其他分享 >Struts2_文件下载

Struts2_文件下载

时间:2023-04-14 11:35:24浏览次数:27  
标签:文件 return String newFileName fileName Struts2 toPage public 下载


第一步:xml配置

<action name="download" class="action.netDiskAction.DownloadAction">
            <!-- 文件名 -->
            <param name="fileName"></param>
            <result name="success" type="stream">
                <!-- 类型-->
                <param name="contentType">text/plain</param>
                <!-- 前台链接参数 -->
                <param name="contentDisposition">attachment;filename="${downloadChineseFileName}"</param>
                <param name="inputName">downloadFile</param>
            </result>
            <result name="downloaderror" type="chain">showResList</result>
        </action>

第二步: 类的实现

import java.io.File;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
 
/**
 * 个人中心资源问答下载附件实现
 */
public class DownloadAction extends ActionSupport {
    private String fileName; // 文件名和文件路径
    private String newFileName; // 用于下载后显示的文件名
    private boolean isExists; // 用户判断文件是否存在
    private int toPage; // 下载资源所在的当前页面
 
    // 从下载文件原始存放路径读取得到文件输出流
    public InputStream getDownloadFile() {
        return ServletActionContext.getServletContext().getResourceAsStream("/" + fileName);
    }
 
    // 如果下载文件名为中文,进行字符编码转换
    public String getDownloadChineseFileName() {
        String downloadChineseFileName = newFileName;
        try {
            downloadChineseFileName = new String(downloadChineseFileName.getBytes(), "ISO8859-1");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return downloadChineseFileName;
    }
public String execute() {
        String basePath = ServletActionContext.getServletContext().getRealPath("");
        String filePath = basePath + fileName;
        File file = new File(filePath);
        if (!file.exists()) {
            HttpServletRequest request = ServletActionContext.getRequest();
            request.setAttribute("message", "文件已经不存在,请联系管理员!");
            // 如果topage为0时,说明在第一页,需要进行重新设置为1
            if (toPage == 0) {toPage = 1;}
            return "downloaderror";
        } else {
            return SUCCESS;
        }
    }
    public String getFileName() {return fileName;}
    public void setFileName(String fileName) {this.fileName = fileName;}
    public String getNewFileName() {return newFileName;}
    public void setNewFileName(String newFileName) {this.newFileName = newFileName;}
    public int getToPage() {return toPage;}
    public void setToPage(int toPage) {this.toPage = toPage;}
}

标签:文件,return,String,newFileName,fileName,Struts2,toPage,public,下载
From: https://blog.51cto.com/u_16070335/6189763

相关文章

  • mvc文件上传
         ......
  • 解决Spark读取tmp结尾的文件报错的问题
    业务场景flume采集文件到hdfs中,在采集中的文件会添加.tmp后缀。一个批次完成提交后,会将.tmp后缀重名名,将tmp去掉。所以,当Spark程序读取到该hive外部表映射的路径时,在出现找不到xxx.tmp文件的问题出现。解决思路:Hdfs提供了读取文件筛选的接口PathFilter。这个接口在hadoop-co......
  • Struts2_防表单重复提交
    一、造成重复提交主要的两个原因:  在平时的开发过程中,经常可以遇到表单重复提交的问题,如做一个注册页面,如果表单重复提交,那么一个用户就会注册多次,重复提交主要由于两种原因。  1、一是,服务器处理时间久。当用户在表单中填完信息,点击“提交”按钮后,由于服务器反应时间过长......
  • 删除或移动c盘hiberfil.sys文件的方法
    第一步、在开始的功能表的搜索栏里输入cmd,然后在搜索结果中的cmd按下右键,点选【以系统管理员身份运行】第二步、在命令提示符窗口里输入下面命令然后按下Enter:powercfg–hoffhiberfil.sys文件会自动消失。如果想让这个文件不放在系统盘中,使用注册表编辑器打开HKEY......
  • C#上传大型视频文件到服务器,解决方案
    ​ 前言文件上传是一个老生常谈的话题了,在文件相对比较小的情况下,可以直接把文件转化为字节流上传到服务器,但在文件比较大的情况下,用普通的方式进行上传,这可不是一个好的办法,毕竟很少有人会忍受,当文件上传到一半中断后,继续上传却只能重头开始上传,这种让人不爽的体验。那有没有......
  • 如何轻松的下载海外镜像
    简介在云计算和云原生环境下,我们会经常使用到海外镜像部署服务,如谷歌镜像仓库(k8s.gcr.io、gcr.io),还有RedHat镜像仓库(quay.io),遇到此类镜像仓库由于某种神秘力量,我们在国内是无法直接下载,本片文章将介绍如何在不魔法上网的情况下下载海外镜像。仓库名称k8s组件镜像k8s.......
  • Fabric生成身份信息文件
    以Ubuntu为例fabric网络架构为3order节点,2org组织,2peer节点1.创建文件并下载二进制文件mkdir3order-2peercd3order-2peer/ 生成身份信息文件需要一些可执行文件,因此我们需要下载fabric的二进制文件,文件路径如下:fabric二进制文件选择适合的fabric版本进行下载,下载完成......
  • npm安装html2pdf后出现缺少文件的情况
      当时发现这个问题的时候,我就去node_modules里面找,确实没有这个文件,故判定是没有完全安装导致的错误信息最终解决方案:在终端中进入项目文件夹,执行以下命令:npmuninstallhtml2pdfnpminstallhtml2pdf这将卸载旧的html2pdf模块并重新安装它。如果你仍然遇到问题,请......
  • 使用java.util.zip对生成的字节数组输出文件流 进行打包压缩(单个、批量),并返回压缩包
    废话不多说直接上代码 packagegov.test.util;importjava.io.ByteArrayInputStream;importjava.io.ByteArrayOutputStream;importjava.io.IOException;importjava.util.List;importjava.util.Map;importorg.apache.tools.zip.ZipEntry;importorg.apache.tools.zip.Zip......
  • 还在用分割字符获取文件名等信息吗?
    stringfilespath=@"D:\Files\测试文件.doc";stringstrFilename=Path.GetFileName(filespath);//返回完整的文件名测试文件.docResponse.Write("返回完整的文件名:"+strFilename+"<br/>");stringextension=Path.GetExtension(filespath);//返......