对象存储核心组件
一、简介
1.1 概述
HZERO对象存储的核心组件,扩展的对象存储都需要添加的基础依赖
1.2 组件坐标
<dependency>
<groupId>org.hzero.starter</groupId>
<artifactId>hzero-starter-file-core</artifactId>
<version>${hzero.starter.version}</version>
</dependency>
1.3 开发指导
1.3.1 文件服务抽象类
- 所有对象存储都需要继承该抽象类,重写下列方法。
public abstract class AbstractFileService {
/**
* 初始化文件服务配置
*
* @param config 存储配置
* @return AbstractFileService
*/
public abstract AbstractFileService init(StoreConfig config);
/**
* 上传本地文件
*
* @param file 文件信息
* @param filePath 文件地址
* @return 返回http地址
*/
public abstract String upload(FileInfo file, String filePath);
/**
* 文件上传
*
* @param file 文件信息
* @param inputStream 字节流
* @return 返回http地址
*/
public abstract String upload(FileInfo file, InputStream inputStream);
/**
* 文件复制
*
* @param file 原文件信息
* @param oldFileKey 原文件的fileKey
* @param oldBucketName 原文件的桶
* @return 新文件的地址
*/
public abstract String copyFile(FileInfo file, String oldFileKey, String oldBucketName);
/**
* 删除文件
*
* @param bucketName 桶
* @param url url
* @param fileKey 文件key
*/
public abstract void deleteFile(String bucketName, String url, String fileKey);
/**
* 获取文件授权url
*
* @param servletRequest request
* @param bucketName 桶名
* @param url url
* @param fileName 文件名
* @param fileKey 文件key
* @param download 是否下载(是否将contentType设置为stream)
* @param expires 有效时长
* @return 下载地址
*/
public abstract String getSignedUrl(HttpServletRequest servletRequest, String bucketName, String url, String fileKey, String fileName, boolean download, Long expires);
/**
* 下载文件
*
* @param request HttpServletRequest
* @param response HttpServletResponse
* @param bucketName 桶
* @param url url
* @param fileKey 文件key
*/
public abstract void download(HttpServletRequest request, HttpServletResponse response, String bucketName, String url, String fileKey);
/**
* 解密并下载文件
*
* @param request HttpServletRequest
* @param response HttpServletResponse
* @param bucketName 桶
* @param url url
* @param fileKey 文件key
* @param password 密钥
*/
public abstract void decryptDownload(HttpServletRequest request, HttpServletResponse response, String bucketName, String url, String fileKey, String password);
/**
* 获取对象前序URL
*
* @param bucketName 文件目录
* @return 文件URL
*/
public abstract String getObjectPrefixUrl(String bucketName);
}
1.3.2 文件服务初始接口
- 所有文件服务类型需要实现的初始接口
public interface StoreCreator {
/**
* 获取文件存储类型,与值集HFLE.SERVER_PROVIDER对应即可
*
* @return 文件存储类型
*/
Integer storeType();
/**
* 获取文件处理类
*
* @return 文件处理类实例化对象
*/
AbstractFileService getFileService();
}