zoukankan      html  css  js  c++  java
  • springmvc文件下载

    文件下载

    使用NIO完成文件夹在几步轻松搞定

    package com.sz.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    
    import javax.servlet.http.HttpServletResponse;
    import java.io.File;
    import java.io.IOException;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    
    @Controller
    @RequestMapping("/download")
    public class FileDownloadController {
    
        private String downloadPath = "D:" + File.separator;
    
        // 下载D盘的reposi.rar
        @RequestMapping("/m1")
        public String m1(HttpServletResponse response){
            String fileName = "reposi.rar";
    //        if()
            // 构建FIle
            // 构建一个Path对象
            Path path = Paths.get(downloadPath,fileName);
    
            if(Files.exists(path)){
                // 如果路径对象存在,可以下载
                // 通过response响应出去
                // 设置好文件类型
                response.setContentType("application/rar");
                // 添加头信息,指定浏览器行为
                response.addHeader("Content-Disposition",
                        "attachment; filename=像我这么帅的人当然是主角.rar");
                // 准备拷贝
                try {
                    Files.copy(path,response.getOutputStream());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
     
            return null;
        }
    }
    
    

    注意,如果是英文名称当然没问题,中文就尴尬了,必须要额外处理下

    先以U8解开,然后以ISO8859-1重组

    package com.sz.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    import javax.servlet.http.HttpServletResponse;
    import java.io.File;
    import java.io.IOException;
    import java.io.UnsupportedEncodingException;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    
    @Controller
    @RequestMapping("/download")
    public class FileDownloadController {
    
        private String downloadPath = "D:" + File.separator;
    
        // 下载D盘的reposi.rar
        @RequestMapping("/m1")
        public String m1(HttpServletResponse response){
            String fileName = "reposi.rar";
    //        if()
            // 构建FIle
            // 构建一个Path对象
            Path path = Paths.get(downloadPath,fileName);
            if(Files.exists(path)){
                // 如果路径对象存在,可以下载
                // 通过response响应出去
                // 设置好文件类型
                response.setContentType("application/rar");
                // 添加头信息,指定浏览器行为
                response.setCharacterEncoding("UTF-8");
                String newName = null;
                try {
                    newName = new String("像我这么帅的人当然是主角".getBytes("UTF-8"),"ISO8859-1");
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
                response.addHeader("Content-Disposition",
                        "attachment; filename=" +
                                newName+".rar");
                // 准备拷贝
                try {
                    Files.copy(path,response.getOutputStream());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return null;
        }
    }
    
    
  • 相关阅读:
    composer npm bower 版本依赖符号说明
    FastAdmin 速极后台框架从 v1.0 到 v1.2 的数据库升级
    FastAdmin 也可以出书了
    FastAdmin 开发时用到的 Git 命令 (2020-09-26)
    FastAdmin用什么弹窗组件
    笔记:Linux 文件权限
    笔记:使用源代码在 Centos 7 安装 Git 2
    php gd 生成表格 图片
    easyui datagrid 清空
    mysql 去重
  • 原文地址:https://www.cnblogs.com/qiudaozhang/p/9576638.html
Copyright © 2011-2022 走看看