zoukankan      html  css  js  c++  java
  • Spring Boot实现文件下载功能

    我们只需要创建一个控制器(Controler)文件,即Controller目录下的File_Download.java,其完整目录如下:

    @Controller
    public class File_Download {
    
        //实现Spring Boot 的文件下载功能,映射网址为/download
        @RequestMapping("/download")
        public String downloadFile(HttpServletRequest request,
                                   HttpServletResponse response) throws UnsupportedEncodingException {
    
            // 获取指定目录下的第一个文件
            File scFileDir = new File("E://music_eg");
            File TrxFiles[] = scFileDir.listFiles();
            System.out.println(TrxFiles[0]);
            String fileName = TrxFiles[0].getName(); //下载的文件名
    
            // 如果文件名不为空,则进行下载
            if (fileName != null) {
                //设置文件路径
                String realPath = "E://music_eg/";
                File file = new File(realPath, fileName);
    
                // 如果文件名存在,则进行下载
                if (file.exists()) {
    
                    // 配置文件下载
                    response.setHeader("content-type", "application/octet-stream");
                    response.setContentType("application/octet-stream");
                    // 下载文件能正常显示中文
                    response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
    
                    // 实现文件下载
                    byte[] buffer = new byte[1024];
                    FileInputStream fis = null;
                    BufferedInputStream bis = null;
                    try {
                        fis = new FileInputStream(file);
                        bis = new BufferedInputStream(fis);
                        OutputStream os = response.getOutputStream();
                        int i = bis.read(buffer);
                        while (i != -1) {
                            os.write(buffer, 0, i);
                            i = bis.read(buffer);
                        }
                        System.out.println("Download the song successfully!");
                    }
                    catch (Exception e) {
                        System.out.println("Download the song failed!");
                    }
                    finally {
                        if (bis != null) {
                            try {
                                bis.close();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }
                        if (fis != null) {
                            try {
                                fis.close();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }
                    }
                }
            }
            return null;
        }
    
    }
    

    这样我们就完成了Spring Boot的文件下载功能。

    运行Spring Boot项目后,在浏览器中输入:http://localhost:8080/download , 你会发现什么?那就是你的浏览器已经开始下载E盘music_eg目录下的某一个文件啦(前提是E盘中存在music_eg目录,当然里面还得有文件,本例仅作为测试),如下图所示:

    文件下载

  • 相关阅读:
    Dubbo源码分析之ExtensionLoader加载过程解析
    大型网站系统与java中间件实践-阅读笔记
    多线程编程-设计模式之保护性暂挂(Guarded Suspesion)模式
    多线程编程-设计模式之不可变对象模式
    Spring技术内幕阅读笔记(一)
    mysql存储过程语法及实例
    Spring-boot官方案例分析之data-jpa
    Spring-boot官方案例分析之log4j
    Spring Boot应用的测试——Mockito
    linux系统安装redis
  • 原文地址:https://www.cnblogs.com/xl-phoenix/p/10094704.html
Copyright © 2011-2022 走看看