介绍
当前端上传文件到后端,后端将文件上传到第三方,在后端不需要保存文件时可以考虑使用临时文件进行存储。好处是:不必再为文件找一个临时的存储位置。
使用场景
在上面的场景中,后端不需要存储前端上传的文件,这时可以考虑将文件保存到临时文件中。保存到临时的好处是,避免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);
}