OSS全称object storage service即对象存储服务,通过它我们能够将文件保存在网上,在前后端分离时,后端可以将文件保存在OSS上,这样前端可以直接从网上查询文件,避免了文件保存在本地导致前端访问时出现图片无法访问的情况。
使用OSS首先需要创建阿里云OSS账号,OSS工具类需要配置访问的endPoint,然后配置对应的秘钥,选择bucked,这样就能够访问到OSS中的bucket。
上传图片时需要将创建一个OSSclient实例,通过client对象的putObject方法能够将文件及文件流按照我们给定的fileName保存在指定的bucket中。在上传时为了避免文件名重复,可以使用UUID或者时间戳拼接一个文件名,图片保存时可以将bucketName、endPoint、fileName拼接为图片对应的URL,保存在数据库中,需要访问图片时可以直接取出url访问。
为了避免垃圾数据,应该及时将不需要的文件删除,因为我们在数据库中保存的是url,但是oss实例对象删除时需要的是bucket中的文件名,所以需要将url解析成fileName,调用deleteObject方法删除。
package com.fh.util;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import org.junit.Test;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;
public class