文件服务客户端
组件编码
hzero-boot-file
一、简介
1.1 概述
文件服务接口集成,使用feign调用实现,依赖客户端操作可避免复杂的Feign调用处理,开发者不用关注客户端与服务端数据交互细节,便于使用和升级处理
1.2 特性
- 基于文件服务实现:hzero-file
1.3 组件坐标
<dependency>
    <groupId>org.hzero.boot</groupId>
    <artifactId>hzero-boot-file</artifactId>
    <version>${hzero.boot.version}</version>
</dependency>
二、使用指南
2.1 文件客户端使用方法
在代码中自动注入文件客户端:
org.hzero.boot.file.FileClient,方法有较为详细的说明,参考方法说明使用即可
2.1.1 文件上传
    /**
     * 上传附件文件(Byte)
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param directory      文件夹
     * @param fileName       文件名
     * @param attachmentUUID 附件UUID
     * @param storageCode    存储配置编码
     * @param byteFile       文件byte
     * @return URL
     */
    public String uploadAttachment(Long organizationId, String bucketName, String directory, String attachmentUUID, String fileName, String fileType, String storageCode, byte[] byteFile)
    /**
     * 上传附件文件(Byte)
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param directory      文件夹
     * @param fileName       文件名
     * @param attachmentUUID 附件UUID
     * @param byteFile       文件byte
     * @return URL
     */
    public String uploadAttachment(Long organizationId, String bucketName, String directory, String attachmentUUID, String fileName, String fileType, byte[] byteFile)
    /**
     * 上传附件文件(Byte)
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param directory      文件夹
     * @param fileName       文件名
     * @param attachmentUUID 附件UUID
     * @param byteFile       文件byte
     * @return URL
     */
    public String uploadAttachment(Long organizationId, String bucketName, String directory, String attachmentUUID, String fileName, byte[] byteFile)
    
    /**
     * 加密并上传附件文件(Byte)
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param directory      文件夹
     * @param fileName       文件名
     * @param attachmentUUID 附件UUID
     * @param byteFile       文件byte
     * @return URL
     */
    public String uploadEncryptAttachment(Long organizationId, String bucketName, String directory, String attachmentUUID, String fileName, byte[] byteFile)
    /**
     * 指定密钥加密并上传附件文件(Byte)
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param directory      文件夹
     * @param fileName       文件名
     * @param attachmentUUID 附件UUID
     * @param byteFile       文件byte
     * @param password       密钥
     * @return URL
     */
    public String uploadEncryptAttachment(Long organizationId, String bucketName, String directory, String attachmentUUID, String fileName, byte[] byteFile, String password)
    /**
     * 上传附件文件(Multipart)
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param directory      文件夹
     * @param attachmentUUID 附件UUID
     * @param fileName       文件名
     * @param multipartFile  文件
     * @return URL
     */
    public String uploadAttachment(Long organizationId, String bucketName, String directory, String attachmentUUID, String fileName, MultipartFile multipartFile)
    /**
     * 上传附件文件(Multipart)
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param directory      文件夹
     * @param attachmentUUID 附件UUID
     * @param fileName       文件名
     * @param docType        锁定文件类型标识 0:按照文件原有类型,1:指定锁定文件contentType为application/octet-stream
     * @param storageCode    存储配置编码
     * @param multipartFile  文件
     * @return URL
     */
    public String uploadAttachment(Long organizationId, String bucketName, String directory, String attachmentUUID, String fileName, int docType, String storageCode, MultipartFile multipartFile)
    /**
     * 上传附件文件(Multipart)
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param directory      文件夹
     * @param attachmentUUID 附件UUID
     * @param fileName       文件名
     * @param docType        锁定文件类型标识 0:按照文件原有类型,1:指定锁定文件contentType为application/octet-stream
     * @param multipartFile  文件
     * @return URL
     */
    public String uploadAttachment(Long organizationId, String bucketName, String directory, String attachmentUUID, String fileName, int docType, MultipartFile multipartFile)
    /**
     * 加密并上传附件文件(Multipart), 不锁定文件类型
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param directory      文件夹
     * @param attachmentUUID 附件UUID
     * @param multipartFile  文件
     * @return URL
     */
    public String uploadEncryptAttachment(Long organizationId, String bucketName, String directory, String attachmentUUID, MultipartFile multipartFile)
    /**
     * 指定密钥加密并上传附件文件(Multipart)
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param directory      文件夹
     * @param attachmentUUID 附件UUID
     * @param multipartFile  文件
     * @param password       密钥
     * @return URL
     */
    public String uploadEncryptAttachment(Long organizationId, String bucketName, String directory, String attachmentUUID, MultipartFile multipartFile, String password)
    /**
     * 上传附件文件(Multipart), 不指定文件名(使用文件原名)
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param directory      文件夹
     * @param attachmentUUID 附件UUID
     * @param multipartFile  文件
     * @return URL
     */
    public String uploadAttachment(Long organizationId, String bucketName, String directory, String attachmentUUID, MultipartFile multipartFile)
    /**
     * 上传文件(Byte)
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param directory      文件夹
     * @param fileName       文件名
     * @param storageCode    存储配置编码
     * @param byteFile       文件byte
     * @return URL地址
     */
    public String uploadFile(Long organizationId, String bucketName, String directory, String fileName, String fileType, String storageCode, byte[] byteFile)
    /**
     * 上传文件(Byte)
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param directory      文件夹
     * @param fileName       文件名
     * @param byteFile       文件byte
     * @return URL地址
     */
    public String uploadFile(Long organizationId, String bucketName, String directory, String fileName, String fileType, byte[] byteFile)
    /**
     * 上传文件(Byte)
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param directory      文件夹
     * @param fileName       文件名
     * @param byteFile       文件byte
     * @return URL地址
     */
    public String uploadFile(Long organizationId, String bucketName, String directory, String fileName, byte[] byteFile)
    /**
     * 加密上传文件(Byte)
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param directory      文件夹
     * @param fileName       文件名
     * @param byteFile       文件byte
     * @return URL地址
     */
    public String uploadEncryptFile(Long organizationId, String bucketName, String directory, String fileName, byte[] byteFile)
    /**
     * 指定密钥加密上传文件(Byte)
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param directory      文件夹
     * @param fileName       文件名
     * @param byteFile       文件byte
     * @return URL地址
     */
    public String uploadEncryptFile(Long organizationId, String bucketName, String directory, String fileName, byte[] byteFile, String password)
    /**
     * 上传文件(Multipart),指定特殊类型
     *
     * @param organizationId 租户Id
     * @param bucketName     桶名称
     * @param directory      文件夹
     * @param fileName       文件名称
     * @param docType        锁定文件类型标识 0:按照文件原有类型,1:指定锁定文件contentType为application/octet-stream
     * @param multipartFile  文件
     * @return 文件url
     */
    public String uploadFile(Long organizationId, String bucketName, String directory, String fileName, int docType, String storageCode, MultipartFile multipartFile)
    /**
     * 上传文件(Multipart),指定特殊类型
     *
     * @param organizationId 租户Id
     * @param bucketName     桶名称
     * @param directory      文件夹
     * @param fileName       文件名称
     * @param docType        锁定文件类型标识 0:按照文件原有类型,1:指定锁定文件contentType为application/octet-stream
     * @param multipartFile  文件
     * @return 文件url
     */
    public String uploadFile(Long organizationId, String bucketName, String directory, String fileName, int docType, MultipartFile multipartFile)
    /**
     * 上传文件(Multipart)
     *
     * @param organizationId 租户Id
     * @param bucketName     桶名称
     * @param directory      文件夹
     * @param fileName       文件名称
     * @param multipartFile  文件
     * @return 文件url
     */
    public String uploadFile(Long organizationId, String bucketName, String directory, String fileName, MultipartFile multipartFile)
    /**
     * 加密上传文件(Multipart)
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param directory      文件夹
     * @return URL地址
     */
    public String uploadEncryptFile(Long organizationId, String bucketName, String directory, MultipartFile multipartFile)
    /**
     * 指定密钥加密上传文件(Multipart)
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param directory      文件夹
     * @param password       密钥
     * @return URL地址
     */
    public String uploadEncryptFile(Long organizationId, String bucketName, String directory, MultipartFile multipartFile, String password)
    /**
     * 上传文件(Multipart),不指定文件名
     *
     * @param organizationId 租户Id
     * @param bucketName     桶名称
     * @param directory      文件夹
     * @param multipartFile  文件
     * @return 文件url
     */
    public String uploadFile(Long organizationId, String bucketName, String directory, MultipartFile multipartFile)
    /**
     * 上传文件(Byte)生成MD5,返回文件key
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param directory      文件夹
     * @param fileName       文件名
     * @param storageCode    存储配置编码
     * @param byteFile       文件
     * @return FileSimpleDTO
     */
    public FileSimpleDTO uploadFileWithMD5(Long organizationId, String bucketName, String directory, String fileName, String fileType, String storageCode, byte[] byteFile)
    /**
     * 上传文件(Byte)生成MD5,返回文件key
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param directory      文件夹
     * @param fileName       文件名
     * @param byteFile       文件
     * @return FileSimpleDTO
     */
    public FileSimpleDTO uploadFileWithMD5(Long organizationId, String bucketName, String directory, String fileName, String fileType, byte[] byteFile)
    /**
     * 上传文件(Byte)生成MD5,返回文件key
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param directory      文件夹
     * @param fileName       文件名
     * @param byteFile       文件
     * @return FileSimpleDTO
     */
    public FileSimpleDTO uploadFileWithMD5(Long organizationId, String bucketName, String directory, String fileName, byte[] byteFile)
    /**
     * 加密上传文件(Byte)生成MD5,返回文件key
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param directory      文件夹
     * @param fileName       文件名
     * @param byteFile       文件
     * @return FileSimpleDTO
     */
    public FileSimpleDTO uploadEncryptFileWithMD5(Long organizationId, String bucketName, String directory, String fileName, byte[] byteFile)
    /**
     * 指定密钥加密上传文件(Byte)生成MD5,返回文件key
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param directory      文件夹
     * @param fileName       文件名
     * @param byteFile       文件
     * @return FileSimpleDTO
     */
    public FileSimpleDTO uploadEncryptFileWithMD5(Long organizationId, String bucketName, String directory, String fileName, byte[] byteFile, String password)
    /**
     * 上传文件(MultipartFile)生成MD5,返回文件key
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param directory      文件夹
     * @param fileName       文件名
     * @param docType        锁定文件类型标识 0:按照文件原有类型,1:指定锁定文件contentType为application/octet-stream
     * @param storageCode    存储配置编码
     * @param multipartFile  文件
     * @return FileSimpleDTO
     */
    public FileSimpleDTO uploadFileWithMD5(Long organizationId, String bucketName, String directory, String fileName, int docType, String storageCode, MultipartFile multipartFile)
    /**
     * 上传文件(MultipartFile)生成MD5,返回文件key
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param directory      文件夹
     * @param fileName       文件名
     * @param docType       锁定文件类型标识 0:按照文件原有类型,1:指定锁定文件contentType为application/octet-stream
     * @param multipartFile  文件
     * @return FileSimpleDTO
     */
    public FileSimpleDTO uploadFileWithMD5(Long organizationId, String bucketName, String directory, String fileName, int docType, MultipartFile multipartFile)
    /**
     * 上传文件(MultipartFile)生成MD5,返回文件key
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param directory      文件夹
     * @param fileName       文件名
     * @param multipartFile  文件
     * @return FileSimpleDTO
     */
    public FileSimpleDTO uploadFileWithMD5(Long organizationId, String bucketName, String directory, String fileName, MultipartFile multipartFile)
    /**
     * 上传文件(MultipartFile)生成MD5,返回文件key,不指定文件名
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param directory      文件夹
     * @param multipartFile  文件
     * @return FileSimpleDTO
     */
    public FileSimpleDTO uploadFileWithMD5(Long organizationId, String bucketName, String directory, MultipartFile multipartFile)
    /**
     * 加密上传文件(MultipartFile)生成MD5,返回文件key
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param directory      文件夹
     * @param multipartFile  文件
     * @return FileSimpleDTO
     */
    public FileSimpleDTO uploadEncryptFileWithMD5(Long organizationId, String bucketName, String directory, MultipartFile multipartFile)
    /**
     * 指定密钥加密上传文件(MultipartFile)生成MD5,返回文件key
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param directory      文件夹
     * @param multipartFile  文件
     * @param password       密钥
     * @return FileSimpleDTO
     */
    public FileSimpleDTO uploadEncryptFileWithMD5(Long organizationId, String bucketName, String directory, MultipartFile multipartFile, String password)
2.1.2 文件下载
/**
     * 通过文件KEY下载文件
     *
     * @param organizationId 租户ID
     * @param fileKey        文件KEY
     * @return Response
     */
    public Response downloadFileResponse(Long organizationId, String fileKey)
    /**
     * 通过文件KEY下载文件并解密
     *
     * @param organizationId 租户ID
     * @param fileKey        文件KEY
     * @param password       密钥(不指定传null)
     * @return Response
     */
    public Response downloadDecryptFileResponse(Long organizationId, String fileKey, String password)
    /**
     * 通过文件URL下载文件
     *
     * @param organizationId 租户ID
     * @param bucketName     桶
     * @param url            文件URL
     * @return Response
     */
    public Response downloadFileResponse(Long organizationId, String bucketName, String storageCode, String url)
    /**
     * 通过文件URL下载文件
     *
     * @param organizationId 租户ID
     * @param bucketName     桶
     * @param url            文件URL
     * @return Response
     */
    public Response downloadFileResponse(Long organizationId, String bucketName, String url)
    /**
     * 通过文件URL下载文件并解密
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param url            url
     * @param password       密钥(不指定传null)
     * @return Response
     */
    public Response downloadDecryptFileResponse(Long organizationId, String bucketName, String url, String storageCode, String password)
    /**
     * 通过文件URL下载文件并解密
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param url            url
     * @param password       密钥(不指定传null)
     * @return Response
     */
    public Response downloadDecryptFileResponse(Long organizationId, String bucketName, String url, String password)
    /**
     * 通过文件KEY下载文件
     *
     * @param organizationId 租户ID
     * @param fileKey        文件KEY
     * @return InputStream
     */
    public InputStream downloadFile(Long organizationId, String fileKey)
    /**
     * 通过文件KEY下载文件并解密
     *
     * @param organizationId 租户ID
     * @param fileKey        文件KEY
     * @param password       密钥(不指定传null)
     * @return Response
     */
    public InputStream downloadDecryptFile(Long organizationId, String fileKey, String password)
    /**
     * 通过文件URL下载文件
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param url            文件URL
     * @return InputStream
     */
    public InputStream downloadFile(Long organizationId, String bucketName, String url)
    /**
     * 通过文件URL下载文件并解密
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param url            url
     * @param password       密钥(不指定传null)
     * @return Response
     */
    public InputStream downloadDecryptFile(Long organizationId, String bucketName, String url, String password)
2.1.3 文件删除
    /**
     * 删除AttachmentUUID下所有文件
     *
     * @param organizationId  租户ID
     * @param bucketName      桶名
     * @param storageCode     存储配置编码
     * @param attachmentUUIDs 附件UUID集合
     */
    public void deleteFile(Long organizationId, String bucketName, List<String> attachmentUUIDs, String storageCode)
    /**
     * 删除AttachmentUUID下所有文件
     *
     * @param organizationId  租户ID
     * @param bucketName      桶名
     * @param attachmentUUIDs 附件UUID集合
     */
    public void deleteFile(Long organizationId, String bucketName, List<String> attachmentUUIDs)
    /**
     * 删除AttachmentUUID下URL对应的文件
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param attachmentUUID 附件UUID
     * @param urls           文件URL集合
     */
    public void deleteFile(Long organizationId, String bucketName, String attachmentUUID, List<String> urls, String storageCode)
    /**
     * 删除AttachmentUUID下URL对应的文件
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param attachmentUUID 附件UUID
     * @param urls           文件URL集合
     */
    public void deleteFile(Long organizationId, String bucketName, String attachmentUUID, List<String> urls)
    /**
     * 删除AttachmentUUID下URL对应的文件,不能删空
     *
     * @param organizationId 租户Id
     * @param bucketName     桶名
     * @param attachmentUUID 附件UUID
     * @param urls           文件url
     */
    public void deleteFileNotNull(Long organizationId, String bucketName, String attachmentUUID, String storageCode, List<String> urls)
    /**
     * 删除AttachmentUUID下URL对应的文件,不能删空
     *
     * @param organizationId 租户Id
     * @param bucketName     桶名
     * @param attachmentUUID 附件UUID
     * @param urls           文件url
     */
    public void deleteFileNotNull(Long organizationId, String bucketName, String attachmentUUID, List<String> urls)
    /**
     * 根据文件KEY删除文件
     *
     * @param organizationId 租户ID
     * @param fileKey        文件KEY
     */
    public void deleteFileByKey(Long organizationId, String fileKey)
    /**
     * 根据文件URL删除文件
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param storageCode    存储配置编码
     * @param urls           文件URL集合
     */
    public void deleteFileByUrl(Long organizationId, String bucketName, String storageCode, List<String> urls)
    /**
     * 根据文件URL删除文件
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param urls           文件URL集合
     */
    public void deleteFileByUrl(Long organizationId, String bucketName, List<String> urls)
2.1.4 文件更新
/**
     * 根据文件KEY更新文件(Byte)
     *
     * @param organizationId 租户ID
     * @param fileKey        文件KEY
     * @param byteFile       文件
     * @return 文件url
     */
    public String updateFile(Long organizationId, String fileKey, byte[] byteFile)
    /**
     * 根据文件KEY更新文件并加密(Byte)
     *
     * @param organizationId 租户ID
     * @param fileKey        文件KEY
     * @param byteFile       文件
     * @return 文件url
     */
    public String updateEncryptFile(Long organizationId, String fileKey, byte[] byteFile)
    /**
     * 根据文件KEY更新文件并指定密钥加密(Byte)
     *
     * @param organizationId 租户ID
     * @param fileKey        文件KEY
     * @param byteFile       文件
     * @return 文件url
     */
    public String updateEncryptFile(Long organizationId, String fileKey, byte[] byteFile, String password)
    /**
     * 根据文件KEY更新文件(MultipartFile)
     *
     * @param organizationId 租户ID
     * @param fileKey        文件KEY
     * @param multipartFile  文件
     * @return 文件url
     */
    public String updateFile(Long organizationId, String fileKey, MultipartFile multipartFile)
    /**
     * 根据文件KEY更新文件并加密(MultipartFile)
     *
     * @param organizationId 租户ID
     * @param fileKey        文件KEY
     * @param multipartFile  文件
     * @return 文件url
     */
    public String updateEncryptFile(Long organizationId, String fileKey, MultipartFile multipartFile)
    /**
     * 根据文件KEY更新文件并加密(MultipartFile)
     *
     * @param organizationId 租户ID
     * @param fileKey        文件KEY
     * @param multipartFile  文件
     * @param password       密钥
     * @return 文件url
     */
    public String updateEncryptFile(Long organizationId, String fileKey, MultipartFile multipartFile, String password)
    /**
     * 根据文件URL更新文件(Byte)
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param url            文件URL
     * @param storageCode    存储配置编码
     * @param byteFile       文件
     * @return 文件url
     */
    public String updateFile(Long organizationId, String bucketName, String url, String storageCode, byte[] byteFile)
    /**
     * 根据文件URL更新文件(Byte)
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param url            文件URL
     * @param byteFile       文件
     * @return 文件url
     */
    public String updateFile(Long organizationId, String bucketName, String url, byte[] byteFile)
    /**
     * 根据文件URL更新文件并加密(Byte)
     *
     * @param organizationId 租户ID
     * @param bucketName     桶
     * @param url            url
     * @param byteFile       文件
     * @return 文件url
     */
    public String updateEncryptFile(Long organizationId, String bucketName, String url, byte[] byteFile)
    /**
     * 根据文件URL更新文件并指定密钥加密(Byte)
     *
     * @param organizationId 租户ID
     * @param bucketName     桶
     * @param url            url
     * @param byteFile       文件
     * @param password       密钥
     * @return 文件url
     */
    public String updateEncryptFile(Long organizationId, String bucketName, String url, byte[] byteFile, String password)
    /**
     * 根据文件URL更新文件(MultipartFile)
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param url            文件URL
     * @param storageCode    存储配置编码
     * @param multipartFile  文件
     * @return 文件url
     */
    public String updateFile(Long organizationId, String bucketName, String url, String storageCode, MultipartFile multipartFile)
    /**
     * 根据文件URL更新文件(MultipartFile)
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param url            文件URL
     * @param multipartFile  文件
     * @return 文件url
     */
    public String updateFile(Long organizationId, String bucketName, String url, MultipartFile multipartFile)
    /**
     * 根据文件URL更新文件并加密(Multipart)
     *
     * @param organizationId 租户ID
     * @param bucketName     桶
     * @param url            url
     * @param multipartFile  文件
     * @return 文件url
     */
    public String updateEncryptFile(Long organizationId, String bucketName, String url, MultipartFile multipartFile)
    /**
     * 根据文件URL更新文件并指定密钥加密(Multipart)
     *
     * @param organizationId 租户ID
     * @param bucketName     桶
     * @param url            url
     * @param multipartFile  文件
     * @param password       密钥
     * @return 文件url
     */
    public String updateEncryptFile(Long organizationId, String bucketName, String url, MultipartFile multipartFile, String password)
2.1.5 获取文件授权url
    /**
     * 指定存储获取文件授权URL
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param storageCode    存储配置编码
     * @param url            文件URL
     * @return 带授权签名的URL
     */
    public String getSignedUrl(Long organizationId, String bucketName, String storageCode, String url)
    /**
     * 获取文件授权URL
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param url            文件URL
     * @return 带授权签名的URL
     */
    public String getSignedUrl(Long organizationId, String bucketName, String url)
    /**
     * 根据文件key,获取授权URL
     *
     * @param organizationId 租户ID
     * @param fileKey        文件KEY
     * @return FileSimpleDTO
     */
    public FileSimpleDTO getSignedUrl(Long organizationId, String fileKey)
2.1.6 获取附件UUID
    /**
     * 获取附件UUID
     *
     * @param organizationId 租户ID
     * @return UUID
     */
    public String getAttachmentUUID(Long organizationId)
2.1.7 获取附件文件列表
    /**
     * 获取附件文件列表
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param attachmentUUID 附件UUID
     * @return List<FileDTO> 文件列表
     */
    public List<FileDTO> getAttachmentFiles(Long organizationId, String bucketName, String attachmentUUID)
2.1.8 获取附件文件数量
    /**
     * 获取附件文件个数
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param attachmentUUID 附件UUID
     * @return Integer 条数
     */
    public Integer getAttachmentFileCount(Long organizationId, String bucketName, String attachmentUUID)
2.1.9 校验附件Id下是否有文件
    /**
     * 校验多个附件ID下是否有文件
     *
     * @param organizationId 租户Id
     * @param bucketName     桶名
     * @param uuidList       文件UUID
     * @return Map
     */
    public Map<String, Boolean> checkUUid(Long organizationId, String bucketName, List<String> uuidList)
2.1.10 获取文件信息列表
    /**
     * 根据URL集合批量获取文件信息
     *
     * @param organizationId 租户ID
     * @param bucketName     桶名
     * @param urls           文件URL集合
     * @return List<FileDTO> 文件集合
     */
    public List<FileDTO> getFiles(Long organizationId, String bucketName, List<String> urls)
2.1.11 复制文件到新的附件ID
    /**
     * 复制文件
     *
     * @param organizationId   租户ID
     * @param fileParamsDTO    文件参数
     * @param listUuid         UUID集合
     * @param sourceBucketName 来源桶名
     * @return Map
     */
    public Map<String, String> copyFile(Long organizationId, FileParamsDTO fileParamsDTO, List<String> listUuid, String sourceBucketName)
2.1.12 获取文件名称
    /**
     * 获取文件名
     *
     * @param string 文件url或者文件key
     * @return 文件名
     */
    public String getFileName(String string)
2.2 onlyOffice客户端
onlyOffice服务搭建参照文件服务开发指导
配置参数:
hzero.file.only-office.token   # document Sever token
hzero.file.only-office.docServerUrl   # document Sever 路径
hzero.file.only-office.callBackUrl   # 文件编辑完成的回调地址
hzero.file.only-office.converterUrl   # 文件格式转换地址
代码中自动注入onlyOffice客户端
org.hzero.boot.file.OnlyOfficeClient, 只有hzero.file.only-office.token配置指定后,onlyOffice相关的bean才会注入
    /**
     * 根据url获取在线编辑文件的HTML信息
     *
     * @param tenantId    租户
     * @param storageCode 存储编码
     * @param url         文件url
     * @param permission  编辑权限
     * @return html
     */
    public String generateHtmlByUrl(Long tenantId, String bucketName, String storageCode, String url, PermissionDTO permission)
    /**
     * 根据fileKey获取在线编辑文件的HTML信息
     *
     * @param tenantId   租户
     * @param fileKey    文件key
     * @param permission 编辑权限
     * @return html
     */
    public String generateHtmlByKey(Long tenantId, String fileKey, PermissionDTO permission)
    
    /**
     * 根据key转换文件  https://api.onlyoffice.com/editors/conversionapi
     *
     * @param outType  输出的文件类型
     * @param tenantId 租户
     * @param fileKey  文件key
     * @param suffix   原文件格式
     * @return 转换后的文件
     */
    public byte[] converterByKey(String outType, Long tenantId, String fileKey, String suffix)
    
    /**
     * 根据url转换文件
     *
     * @param outType     输出的文件类型
     * @param tenantId    租户
     * @param bucketName  桶
     * @param storageCode 存储编码
     * @param url         文件url
     * @param suffix      原文件格式
     * @return 转换后的文件
     */
    public byte[] converterByUrl(String outType, Long tenantId, String bucketName, String storageCode, String url, String suffix)
三、版本更新日志
0.8.0.RELEASE [2019-02-28]
- 初始文件客户端程序版本
0.10.0.RELEASE [2019-06-23]
- 添加文件加密上传解密下载
- 文件操作相关接口,添加存储配置编码字段
0.11.0.RELEASE [2019-07-24]
- 添加onlyOffice客户端