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;
        }
    }
    
    
  • 相关阅读:
    linux tar order
    Linux驱动学习步骤(转载)
    汇编指令(转载)
    拓扑排序
    python 三维坐标图
    python 矩阵
    spring 之 IOC 依赖注入详解
    spring 下载
    Struts数据验证
    拦截器配置
  • 原文地址:https://www.cnblogs.com/qiudaozhang/p/9576638.html
Copyright © 2011-2022 走看看