• 对象存储核心组件


    一、简介

    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();
    }