智能云端素材库后端-图片模块
对象存储
服务器本地存储缺点:
- 不利于扩展: 服务器存储空间问题
- 不利于迁移
- 不够安全: 权限控制不当,会被用户恶意访问资源
- 不利于管理: 缺乏数据处理、流量控制等功能
对象存储:存储海量文件的分布式服务,具有高扩展性、低成本、可靠性等优点。
上传图片的处理策略
主要问题在于图片与图片数据的存储。
两种方法:
- 上传图片时生成图片url,在填写信息后统一保存。
- 上传图片时生成默认信息并保存,在填写信息后修改信息。
方法一可能造成空间浪费,方法二避免这一点同时还能信息溯源。
配置对象存储
购买并创建腾讯云COS服务。
创建COS客户端对象
- 引入依赖
- 在config包下建立CosClientConfig类,并创建COS客户端的Bean。
- 填写配置文件
填写的配置文件中包含客户端密码等敏感信息,因此写在local配置文件中,并在.gitignore
中进行配置忽略该文件提交。
通用能力类
创建CosManager类,用于引入对象存储配置和与COS交互。
之后在其中添加文件上传功能。
文件下载
下载方式有:
- 先下载COS文件到服务器,再返回给客户端,适用于对安全性较高的场景。
- 将文件下载输入流返回给前端。
- 直接通过url下载,适用于公开资源。
还可以在服务器校验后,返给客户端密钥,然后客户端使用密钥直接访问COS资源。
由于素材库图片资源公开,直接使用url进行下载。
图片上传
首先生成图片表的基本方法。
数据模型
创建上传请求类,并创建图片视图包装类PictureVO
通用文件上传服务
首先创建响应请求类,并实现COS上传图片文件并解析图片的功能。解析图片用到了数据万象API。
上传图片的方法流程为:
- 校验图片:包括文件大小与文件类型(根据后缀校验)
- 生成图片地址
- 上传图片,并返回结果
- 删除图片临时文件
服务开发
创建并实现上传图片服务,注意区分首次上传还是更新。
接口开发
注意权限控制。
扩展
可以使用流的方式上传图片到COS,避免生成本地临时文件。
图片管理
包括编辑图片,更新图片,查询图片。
服务开发
包括:
- 管理员判断
- 分页查询
- 获取图片封装
- 分页获取图片封装
- 校验图片
接口开发
增删改查