在线问题反馈模块实战(十二):实现图片删除功能
👨🎓作者:bug菌
✏️博客: 、 、 、 等
🎉简介:CSDN/阿里云/华为云/51CTO 博客专家,博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,掘金/InfoQ/51CTO等社区优质创作者,全网粉丝合计10w+,硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费领取简历模板/学习资料/大厂面试真题/职业规划等海量资料。
..
✍️温馨提醒:本文字数:1999字, 阅读完需:约 6 分钟
嗨,家人们,我是bug菌呀,我又来啦。今天我们来聊点什么咧,OK,接着为大家更
系列文章吧。希望能帮助更多的初学者们快速入门!如果小伙伴们在批阅文章的过程中觉得文章对自己有帮助,请别吝啬手中的赞呀,大胆的把文章点亮👍,相信你点赞了好的文章,平台也会经常给你推荐高质量好文,您的点赞三连(收藏+关注+留言)就是对bug菌写文道路上最好的鼓励与支持😘。时光不弃🏃🏻♀️,创作不停💕,加油☘️
一、前言🔥
接下来的这几期,bug菌想跟大家分享一下自己昨天刚接到一个临时的需求,热乎着呢,想分享一下自己是如何面对临时需求并制定整个开发周期,其中包括从梳理业务到创建业务表再到实现业务逻辑形成闭环再到与前端对接,其中会穿插一些业务拓展及功能性拓展,这一条龙流程在线与大家一起见证,分享给刚入门的小伙伴,希望对你们有所帮助。
环境说明:idea2019.3 + springboot2.3.1.REALSE + mybati-plus3.2.0 + mysql5.6 + jdk1.8
若小伙伴们在批阅文章的过程中觉得文章对您有一丝丝帮助,还请别吝啬您手里的赞呀,大胆的把文章点亮👍吧,您的点赞三连(收藏⭐️+关注👨🎓+留言📃)就是对bug菌我创作道路上最好的鼓励与支持😘。时光不弃🏃🏻♀️,创作不停💕,加油☘️
二、正文🔥
在上一期,我们是完整的讲述了从Controller接口定义到接口方法实现,完美实现了按指定路径进行图片上传及数据库记录插入。而这一期,我要给大家讲点什么嘞?你们想知道么?其实也有据可循,你们想想,一个业务肯定是要形成闭环,图片也是,图片上传就要支持本地下载、在线预览、在线删除等业务线。所以这一期,我给大家讲讲,如何实现指定图片在线预览功能,具有很好的教学价值,希望大家能挺我,认真把它看完。
三、如何代码实现图片删除🔥
说起这几期的内容,图片的增删改查,唯独现在就剩图片删除没有说了,其他仨个功能点我们都在前几期讲过了,比如图片上传、图片下载、图片在线预览,而这一期,我们就来完结它,把剩下对图片的指定删除功能给实现咯。这一块图片业务也就做到闭环了,既能上传服务器就能删服务器的图片资源,对吧。
谈及这些小功能点,虽然说都不是啥跟业务有啥直接关联的,但是一旦涉及到图片资源等业务场景,这图片的增删改查必不可少,所以说,我是一字一句的将这些小功能点的给大家讲一遍,希望日后对你们在座的各位有遇到该业务的,能有所帮助即可。
废话不多说,咱们就开始今天的教学内容。
1️⃣定义Controller请求
我们还是老套路,先定义好请求接口吧,功能点是图片删除,需要那些参数?根据业务分析一波即可得出,我就按我实际业务场景给大家讲一下啊。比如我这业务场景是,用户可以对自己的问题反馈进行编辑,同时是能对其附件图片手动删除的,那么也就说既可编辑普通字段内容,也能移除附件图片,那我就将这个点分开,图片要移除直接调用接口1,反馈问题编辑调用接口2,对吧,这样就不需要把该业务规整成当时的问题反馈时一并保存那样的复杂业务逻辑了。
so,我们接下来啊,直接撸代码吧!
2️⃣定义接口deleteImgByPath()
接着就是定义该deleteImgByPath() 接口了。具体实现代码如下:
3️⃣实现deleteImgByPath()方法
这里就是涉及图片删除重点了,看过我图片批量保存的逻辑就应该知道,数据中filePaths字段是按多图片路径以逗号隔开保存的,所以对于需要移除filePaths中的某一个路径,那我们就要对该路径进行一个剔除指定要移除的那个路径且再更新该条记录,也就是将移除后的路径重新回写到记录中去。
所以,我们写该方法,第一:更新移除后的路径地址,第二:移除服务器文件。运行第二步的前提是第一步必须是成功之后的,因为第一步是更容易出错的,而对于第二步就算移除失败,也可以日后在进行无用资源进行一个定时扫描清理掉,就算删除文件失败,也就是占用一点服务器内存资源而已,并不会影响啥,因为用户更希望移除能成功,所以提交移除成功率,我们就是先更新路径,后移除实体文件。
那我就带着你们大家一起来实现该方法了。
解释一下,对于filePaths字段,我们直接可以用split以逗号进行分割转成一个路径数组,然后从数组中去匹配是否有目标路径,再选择返回对于的一些业务判断,比如文件是否存在等情况。
4️⃣实现图片deleteImgByPath()删除方法
对于该removeFile()方法, 这里就比较简单了,可以直接通过使用file所提供的delete()方法,就能有效实现对该图片资源进行彻底删除。这点还是非常便捷且有利的。
5️⃣接口测试
至于上述接口都定义且实现好了,所以对于目前剩余要做的事情就是,单元测试+接口测试。我们比较关心的还是对于该功能点是否能真正满足业务需求,如果无法到达业务需要,那我们就要进行修改或者重写,都有可能,所以我们在写完一个接口的同时,一定要做好测试,别让其他同事比如测试人员、前端人员创造多余的工作量。
我们直接可通过在线swagger文档或者postman进行该接口调试。
postman测试文件删除接口
这是我可以传的一条不存在的文件路径,删除肯定是直接返回自定义的msg。
我给予一个存在的路径地址,进行图片删除。演示结果如下:
至于swagger文档,也是一样的操作演示,我这就不给大家一一演示了哈。不清楚的可以评论区问,我看见了一定第一时间解答。
6️⃣总结
相对而言,还是一步到位,没遇到什么bug,这个实测功能可用,大家可以放心copy哈。
好啦,以上就是这期的所有内容啦,你们学废了么?如果对你有所帮助,还请不要忘记给bug菌[三连支持]哟。如果想获得更多的学习资源或者想和更多的技术爱好者一起交流,可以关注我的公众号『 』,后台回复关键词领取学习资料、大厂面经、面试模板等海量资源,就等你来拿。
四、往期热文推荐🔥
对于问题反馈模块实战开发,我完整的梳理了每一期的教学及链接地址,仅供参考:希望能对你们有所帮助。
如上是整整二十期内容,每一期都是干货,对于一个模块的开发,如何一点一滴打造并测试部署上线,我再说一遍,这不是演习,是实战!是实战!是实战!
若你们觉得只是需要了解其中某个知识点或者业务的话,也不反对,你就选择其中的几期进行学习就好,反正都已经完结啦;我只希望你们能有所收获,有所成长,也就不枉我苦心每天下班后给大家总结更新。
五、文末🔥
如果还想要学习更多,小伙伴们直接订阅bug菌专门为大家创建的零基础入门Spring Boot专栏 ,从无到有,从零到一!以知识点+实例+项目的学习模式由浅入深对Spring Boot框架进行学习&使用。
我是bug菌,一名想走👣出大山改变命运的程序猿。接下来的路还很长,都等待着我们去突破、去挑战。来吧,小伙伴们,我们一起加油!未来皆可期,fighting!
- 点赞
- 收藏
- 关注作者
评论(0)