SpringBoot将上传的文件保存到临时文件

发布于:2024-04-18 ⋅ 阅读:(30) ⋅ 点赞:(0)

介绍

当前端上传文件到后端,后端将文件上传到第三方,在后端不需要保存文件时可以考虑使用临时文件进行存储。好处是:不必再为文件找一个临时的存储位置。

使用场景

上传文件
上传文件
前端
后端
第三方

在上面的场景中,后端不需要存储前端上传的文件,这时可以考虑将文件保存到临时文件中。保存到临时的好处是,避免new File()时指定文件的存储路径,有时候确实也不知道存储到哪个路径。比如:在本地开发时知道本地的路径,但是不知道线上服务器的路径。上传玩记得将临时文件删除。

代码

@RequestMapping("/upload/tempFile")
@ResponseBody
public Map<String, Object> uploadTempFile(@RequestParam("file") MultipartFile file) {
    File tempFile = null;
    try {
        //生成文件名称
        String fileName = UUID.randomUUID().toString();

        //截取文件名称后缀
        String fileSuffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));

        //创建临时文件
        //File.createTempFile("文件名称", "文件后缀");
        //File.createTempFile("temp", ".tmp");
        tempFile = File.createTempFile(fileName, fileSuffix);

        //将上传的文件保存到临时文件
        file.transferTo(tempFile);
        
        //调用第三方上传接口
        String reslut = HttpUtile.doGet(....);
        
        //result为空表示上传失败
        if (org.apache.commons.lang3.StringUtils.isBlank(reslut)) {
            return this.getJsonMap(false, "上传失败", ResultCode.ERROR.getCode(), null);
        }
    } catch (Exception e) {
        logger.error("uploadTempFile", e);
        return this.getJsonMap(false, "error", ResultCode.ERROR.getCode(), null);
    } finally {
        //删除临时文件
        tempFile.delete();
    }
    return this.getJsonMap(true, "上传成功", ResultCode.SUCCESS.getCode(), null);
}