# SpringBoot+thymeleaf 实现文件下载 **Repository Path**: Totoro888/springBoot_thymeleaf_download_file ## Basic Information - **Project Name**: SpringBoot+thymeleaf 实现文件下载 - **Description**: SpringBoot+thymeleaf 实现文件下载 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 2 - **Created**: 2021-08-12 - **Last Updated**: 2023-12-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SpringBoot文件下载 ## 1.项目结构  ## 2.FileController.java ```java package xin.baizhiedu.controller; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.util.FileCopyUtils; import org.springframework.web.bind.annotation.RequestMapping; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.FileInputStream; import java.net.URLEncoder; @Controller @RequestMapping("/file") public class FileController { private static final Logger log = LoggerFactory.getLogger(FileController.class); @Value("${file.download.dir}") private String realPath; /** * 文件下载 * @param fileName */ @RequestMapping("/download") public void downloadFile(String fileName, HttpServletResponse response) throws Exception { log.debug("当前下载的文件名是:{}", fileName); log.debug("当前下载的文件的目录是:{}", realPath); // 1.去指定目录读取文件 File file = new File(realPath, fileName); // 2.将文件读取为文件输入流 FileInputStream is = new FileInputStream(file); // 2.1 获取响应流之前 一定要设置以附件形式下载 response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")); // 3.获取响应输出流 ServletOutputStream os = response.getOutputStream(); // 4.输入流复制给输出流 /*int len = 0; byte[] buff = new byte[1024]; while (true) { len = is.read(buff); if (len==-1) break; os.write(buff, 0, len); }*/ // 5.释放资源 /*os.close(); is.close();*/ FileCopyUtils.copy(is,os); } } ``` ## 3.index.html ```html