智能云端素材库后端-图片模块

对象存储

服务器本地存储缺点:

  • 不利于扩展: 服务器存储空间问题
  • 不利于迁移
  • 不够安全: 权限控制不当,会被用户恶意访问资源
  • 不利于管理: 缺乏数据处理、流量控制等功能

对象存储:存储海量文件的分布式服务,具有高扩展性、低成本、可靠性等优点。

上传图片的处理策略

主要问题在于图片与图片数据的存储。

两种方法:

  1. 上传图片时生成图片url,在填写信息后统一保存。
  2. 上传图片时生成默认信息并保存,在填写信息后修改信息。

方法一可能造成空间浪费,方法二避免这一点同时还能信息溯源。

配置对象存储

购买并创建腾讯云COS服务。

创建COS客户端对象

  • 引入依赖
  • 在config包下建立CosClientConfig类,并创建COS客户端的Bean。
  • 填写配置文件

填写的配置文件中包含客户端密码等敏感信息,因此写在local配置文件中,并在.gitignore中进行配置忽略该文件提交。

通用能力类

创建CosManager类,用于引入对象存储配置和与COS交互。

之后在其中添加文件上传功能。

文件下载

下载方式有:

  • 先下载COS文件到服务器,再返回给客户端,适用于对安全性较高的场景。
  • 将文件下载输入流返回给前端。
  • 直接通过url下载,适用于公开资源。

还可以在服务器校验后,返给客户端密钥,然后客户端使用密钥直接访问COS资源。

由于素材库图片资源公开,直接使用url进行下载。

图片上传

首先生成图片表的基本方法。

数据模型

创建上传请求类,并创建图片视图包装类PictureVO

通用文件上传服务

首先创建响应请求类,并实现COS上传图片文件并解析图片的功能。解析图片用到了数据万象API。

上传图片的方法流程为:

  • 校验图片:包括文件大小与文件类型(根据后缀校验)
  • 生成图片地址
  • 上传图片,并返回结果
  • 删除图片临时文件

服务开发

创建并实现上传图片服务,注意区分首次上传还是更新。

接口开发

注意权限控制。

扩展

可以使用流的方式上传图片到COS,避免生成本地临时文件。

图片管理

包括编辑图片,更新图片,查询图片。

服务开发

包括:

  • 管理员判断
  • 分页查询
  • 获取图片封装
  • 分页获取图片封装
  • 校验图片

接口开发

增删改查