环境背景:
上传用户信息时,图片上传至七牛云服务器的对象存储空间内,每次点击上传图片,无论用户最后是否确定添加/编辑,都会把图片上传到服务器,
问:添加或编辑用户信息后,如何清理多余、没用的图片数据?
解决方案一:
思路:定义两个set集合,一个用来存放没确定的图片信息,一个用来存放已经确定的图片信息,把两个值存在redis数据库里,用redis.sdiff筛选多余的图片,然后根据图片信息在云服务器中删除。
常量类:
public class RedisConstant {
//图片所有图片名称
public static final String PIC_RESOURCES = "PicResources";
//图片保存在数据库中的图片名称
public static final String PIC_DB_RESOURCES = "PicDbResources";
}
控制层Controller类
@RestController
@RequestMapping("/user")
public class UserController {
//使用JedisPool操作Redis服务
@Autowired
private JedisPool jedisPool;
//文件上传
@RequestMapping("/upload")
public Result upload(@RequestParam("imgFile") MultipartFile imgFile){
System.out.println(imgFile);
String originalFilename = imgFile.getOriginalFilename();//原始文件名 123123.jpg
int index = originalFilename.lastIndexOf(".");
String extention = originalFilename.substring(index - 1);//.jpg
String fileName = UUID.randomUUID().toString() + extention