智能协同云图库day7
图片上传功能
需求:
管理员:
1、 管理员创建并上传图片。支持选择本地图片上传,并填写相关信息,如名称、简介、标签、分类等。系统会自动解析图片的基础信息(如宽高和格式等),便于检索。
开发步骤:
(1) 创建库表。将图片信息写入,分别有:图片的id、url、名称、简介、分类、标签(JSON 数组),图片体积、图片宽度、图片高度、图片宽高比例、图片格式、创建用户id、创建时间、编辑时间、更新时间、逻辑删除。对名称、id、分类、标签、简介设置索引。
(2) 根据COS官方文档的指引,在pom文件中引入腾讯云对象存储的依赖,在application_local .yml配置文件中配置相关参数。创建一个CosColientConfig类来实例化一个客户端与COS进行交互,其中包含了配置文件的信息:域名、id、密钥、区域、存储桶名,并且编写方法返回一个客户端实例。
(3) 编写Manage类。用来定义通用的和COS交互的方法,文件上传、文件下载。
(4) 编写Controller。当用户从前端发送上传图片的请求后,Controller中需要有的参数有:接收数据的请求体(只需要接收id)、接收文件的MultipartFile类型的对象、对象request(需要鉴权,需要用户的登录态)。返回脱敏后的实体,其中去除逻辑删除字段,标签字段由json格式转为了List。
(5) 编写一个FileManage类,专门用来定义更贴近业务的图片方法,包含了图片的校验、指定上传路径、解析图片。图片的校验包含校验图片是否为空、校验文件大小、校验文件后缀。指定上传路径可以指定该文件上传到COS的哪个文件夹中。解析图片通过腾讯云数据万象的使用,可以直接获得如图片长、宽之类的信息。文件上传时,会先在本地创建临时文件,无论上传是否成功,都要记得删除临时文件。
(6) 编写Service类。业务逻辑为:首先判断是更新图片还是新增图片,如果是更新图片,则需要检验图片是否存在(查看id),并且只有本人和管理员才可以更新。然后上传图片、并得到要存入数据库的信息。
2、 图片管理:管理员对图库内的图片资源进行管理,包括查询和删除。
(1) 图片更新:与图片上传类似。
(2) 图片删除:实体类仅id字段,其余逻辑与图片上传类似。
(3) 根据id获取图片:直接查询数据库,返回封装图片对象即可。
(4) 分页获取图片序列:首先单独封装一个通用的分页请求接收类,接收当前页号、页面大小、排序字段、排序顺序这些值。使图片的查询请求类继承该通用类。在Service类中继承了一个IService类,用以实现分页获取查询功能。
用户:
注意返回值类的转换,这里需要脱敏,以及对tag字段进行转换。
1、 查看与搜索图片列表:用户在主页上可以按关键词搜索图片,并支持按分类、标签等筛选条件分页查看图片列表。
2、 查看图片详情:用户点击列表中的图片后,可进入详情页,查看图片的大图及相关信息,如名称、简介、分类、标签、其他图片信息(如宽高和格式等)。 后端直接返回图片的脱敏信息,其中包括url,可以直接访问到该图像。
3、 图片下载:用户在详情页可点击下载图片按钮,将图片保存到本地。 根据路径获得COS文件对象,然后将文件对象转换为文件流,并写入Servlet的Response对象中。要设置文件下载专属的响应头。
记录:
前几天一直忙着搞前端,今天把之前学的图像模块再复习一下。 今天就学了一个算法题,是关于滑动窗口的队列题。 八股需要安排多一点时间好好学一下了,看面试鸭的题目感觉大多都不会。
