/** * 文件上传介绍 */ @RestController @RequestMapping("/common") @Slf4j public class UploadController { // 动态读取配置文件中的路径 @Value("${fileDir.name}") private String fileURLPath; // 上传 @PostMapping("/upload") public R upload(MultipartFile file) throws IOException { // file必须跟请求中的名称一样 . 是一个临时文件,需要转存到指定位置,否则本次请求完成后临时文件会删除 // System.out.println(file.getOriginalFilename()); //原始文件名 // 给上传到服务器的文件重命名,并且名字必须唯一 String uuidName = UUID.randomUUID().toString(); // 将UUID转化为String log.info("原始文件名为:{}", file.getOriginalFilename()); String originalFilename = file.getOriginalFilename(); // 获得原文件名称 String substring = originalFilename.substring(originalFilename.lastIndexOf(".")); // 获得文件的后缀 .jpg uuidName = uuidName + substring; //保存到服务器本地 也可以使用 输出流进行本地存储 file.transferTo(new File(fileURLPath + uuidName)); // FileOutputStream fos = new FileOutputStream(fileURLPath + uuidName); // fos.write(file.getBytes()); return R.success(uuidName); } // 下载 @Autowired private HttpServletResponse response; /** * 解决不能上传大文件的方案 在 application.yml 中配置 * servlet: * multipart: * file-size-threshold: */ @GetMapping("/download") public void download(String name) throws IOException { // 从浏览器本地读取到内存 返回到客户端 FileInputStream is = new FileInputStream(fileURLPath + name); ServletOutputStream os = response.getOutputStream(); byte[] bytes = new byte[1024]; while (true) { int len = is.read(bytes); if (len == -1) { break; } os.write(bytes, 0, len); } os.close(); is.close(); } }
文件上传实现
最新推荐文章于 2022-11-30 08:17:53 发布
该博客介绍了如何在Spring Boot应用中实现代理文件上传和下载功能。通过@RestController注解定义了UploadController,动态读取配置文件中的路径,使用MultipartFile处理文件上传,将文件重命名为唯一的UUID名并存储到服务器。同时,提供了下载方法,通过FileInputStream和ServletOutputStream读取并返回文件内容。
摘要由CSDN通过智能技术生成