本文已参与「新人创作礼」活动,一起开启掘金创作之路。
前言
- 记录时间:2022.5.31
- 内容:在RuoYi中调用图片等附件信息。
- 备注:以下内容全部是小白在实习期间师傅带领之下的心得,并非专业人士的发言,如有措辞过于绝对的不当欢迎指出。
正文
在刚接触这部分,我对于图片的刻板印象就是必须要有个地方存它,用即调用链接。虽然这个刻板印象在现在去看也没什么不对,但实际自己去开发一个项目建表的时候,就会发现曾经师傅说的那句“附件和实体表息息相关,却又相互独立”的真正含义。
不知道现在还有多少人像当初的我一样觉得:只要一个实体是关联图片的,那必然就要在这个实体类的设计里加上url参数。(实际上这并不是必然,并且大部分情况下也不这么干。
或许涉及了面向对象的封装,高内聚低耦合之类的。
如果每一个有附件需求的类中,都加入关乎附件的一个url,那么在整理整个系统的图库时,会变得异常繁琐。项目越庞大,越不好操作。
可能你会问,整理图库干什么,又不是专门做图床的公司。
这么来讲吧。附件上传需要一个地址没错,学校里学习的基础增删改查,都是建立在本地运行的基础上,所以图片什么基本也是归类到一个文件夹,前端html、jsp调用一下就好。但实际进入公司,或者自己做一些上线项目的时候,是需要将这些附件上传到云端的,所谓云数据库。
购买云数据库也就意味着,你存放的东西越多,需要的数据库容量就越大,耗材资金也就会随之上涨。
也并非人人都是不差钱的主。你说你电脑容量满了,是清理一下删删无用数据,还是重新买一台呢?这个类比显而易见了吧。在云端的那些图片之类的附件数据,我们也是需要定期清理的。
目前我所了解到需要清理的数据大致包括这些:开发过程中产生的测试数据,被逻辑删除的数据等~
这些在RuoYi里的体现是:sys_oss表的status会变成-1
调用代码
- 关键代码:
ossService.findByMsgId(idddddd.toString(),FileConstant.XXXXXX); - 其中第1个参数是对应这个类别的id。
- 第2个参数是附件标识常量设置的对应名称。
- RuoYi自带的标识常量设置好像是Club,我用的是FileConstant,大差不差。
//Controller
@Autowired
private ISysOssService ossService;
@ApiOperation("一个oss测试接口")
@PostMapping("/test")
@ResponseBody
public AjaxResult test(){
Map resMap = new HashMap<>();
ossService.findByMsgId(idddddd.toString(),FileConstant.XXXXXX);
try{
return AjaxResult.success(resMap);
} catch (Exception e){
e.printStackTrace();
return AjaxResult.error("获取xxx失败"+e.getMessage());
}
}