mirror of
				https://github.com/continew-org/continew-starter.git
				synced 2025-10-31 10:57:15 +08:00 
			
		
		
		
	feat(web): FileUploadUtils 新增文件下载方法
This commit is contained in:
		| @@ -18,17 +18,23 @@ package top.charles7c.continew.starter.web.util; | ||||
|  | ||||
| import cn.hutool.core.date.DatePattern; | ||||
| import cn.hutool.core.date.DateUtil; | ||||
| import cn.hutool.core.io.IoUtil; | ||||
| import cn.hutool.core.io.file.FileNameUtil; | ||||
| import cn.hutool.core.util.IdUtil; | ||||
| import jakarta.servlet.http.HttpServletRequest; | ||||
| import jakarta.servlet.http.HttpServletResponse; | ||||
| import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | ||||
| import org.springframework.http.HttpHeaders; | ||||
| import org.springframework.http.MediaType; | ||||
| import org.springframework.web.multipart.MultipartFile; | ||||
|  | ||||
| import java.io.File; | ||||
| import java.io.FileInputStream; | ||||
| import java.time.LocalDateTime; | ||||
|  | ||||
| /** | ||||
|  * 文件上传工具类 | ||||
|  * 文件工具类 | ||||
|  * | ||||
|  * @author Zheng Jie(<a href="https://gitee.com/elunez/eladmin">ELADMIN</a>) | ||||
|  * @author Charles7c | ||||
| @@ -41,7 +47,7 @@ public class FileUploadUtils { | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 上传文件 | ||||
|      * 上传 | ||||
|      * | ||||
|      * @param multipartFile          源文件对象 | ||||
|      * @param filePath               文件路径 | ||||
| @@ -51,7 +57,6 @@ public class FileUploadUtils { | ||||
|     public static File upload(MultipartFile multipartFile, String filePath, boolean isKeepOriginalFilename) { | ||||
|         String originalFilename = multipartFile.getOriginalFilename(); | ||||
|         String extensionName = FileNameUtil.extName(originalFilename); | ||||
|  | ||||
|         String fileName; | ||||
|         if (isKeepOriginalFilename) { | ||||
|             fileName = "%s-%s.%s".formatted(FileNameUtil.getPrefix(originalFilename), DateUtil.format(LocalDateTime | ||||
| @@ -59,7 +64,6 @@ public class FileUploadUtils { | ||||
|         } else { | ||||
|             fileName = "%s.%s".formatted(IdUtil.fastSimpleUUID(), extensionName); | ||||
|         } | ||||
|  | ||||
|         try { | ||||
|             String pathname = filePath + fileName; | ||||
|             File dest = new File(pathname).getCanonicalFile(); | ||||
| @@ -71,8 +75,35 @@ public class FileUploadUtils { | ||||
|             multipartFile.transferTo(dest); | ||||
|             return dest; | ||||
|         } catch (Exception e) { | ||||
|             log.error("Upload file occurred an error: {}. fileName: {}.", e.getMessage(), fileName, e); | ||||
|             log.error(e.getMessage(), e); | ||||
|         } | ||||
|         return null; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 下载 | ||||
|      * | ||||
|      * @param request    请求对象 | ||||
|      * @param response   响应对象 | ||||
|      * @param file       文件 | ||||
|      * @param autoDelete 下载后自动删除 | ||||
|      */ | ||||
|     public static void download(HttpServletRequest request, | ||||
|                                 HttpServletResponse response, | ||||
|                                 File file, | ||||
|                                 boolean autoDelete) { | ||||
|         response.setCharacterEncoding(request.getCharacterEncoding()); | ||||
|         response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); | ||||
|         response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + file.getName()); | ||||
|         try (FileInputStream fis = new FileInputStream(file)) { | ||||
|             IoUtil.copy(fis, response.getOutputStream()); | ||||
|             response.flushBuffer(); | ||||
|         } catch (Exception e) { | ||||
|             log.error(e.getMessage(), e); | ||||
|         } finally { | ||||
|             if (autoDelete) { | ||||
|                 file.deleteOnExit(); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user