跳至主要內容

oss 文件存储使用手册

大约 2 分钟

oss 文件存储使用手册

一、组件介绍

该组件对接多个公有云对象存储服务,如阿里oss,腾讯cos,minio,ftp,sftp,local等,组件提供了上传,下载,删除,复制,移动,重命名 ,获取文件及目录信息等功能。

二、使用说明

pom引入

<dependency>
    <groupId>com.pcitc.si</groupId>
    <artifactId>common-oss-starter</artifactId>
    <version>1.0.0-SNAPSHOT</version>
</dependency>

以下根据使用存储目标位置 配置不同。

本地存储:使用本机存储时,不需要导入额外的依赖包,在application.yml中增加如下配置:

local

oss:
  oss-type: local
  base-path: 本地文件存储根路径
  local:
    slice-config:
      task-num: 8
      part-size: 104857600 # 1024*1024*100

FTP

<dependency>
    <groupId>commons-net</groupId>
    <artifactId>commons-net</artifactId>
    <version>3.8.0</version>
</dependency>

在application.yml中增加如下配置:

oss:
  oss-type: ftp
  base-path: FTP服务器存储根路径
  ftp:
    host: FTP服务器IP
    port: FTP服务端口
    user: 用户名
    password: 密码
    charset: 编码

SFTP

<dependency>
    <groupId>com.jcraft</groupId>
    <artifactId>jsch</artifactId>
    <version>0.1.55</version>
</dependency>
<dependency>
    <groupId>commons-net</groupId>
    <artifactId>commons-net</artifactId>
    <version>3.8.0</version>
</dependency>

在application.yml中增加如下配置:

oss:
  oss-type: sftp
  base-path: SFTP服务器存储根路径
  sftp:
    host: SFTP服务器IP
    port: SFTP服务端口
    user: 用户名
    password: 密码
    charset: 编码

阿里云

<dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>3.13.2</version>
</dependency>

在application.yml中增加如下配置:

oss:
  oss-type: ali
  base-path: 阿里云存储根路径
  ali:
    access-key-id: accessKeyId
    access-key-secret: accessKeySecret
    endpoint: endpoint
    bucket-name: bucketName
    slice-config:
      task-num: 8  
      part-size: 104857600 

三、使用示例

在需要使用的Spring Bean中注入StandardOssClient对象即可。

@Autowired
StandardOssClient standardOssClient;

 @ApiOperation("osstest") @PostMapping("/105030017")
    public Result osstest(@RequestParam("file") MultipartFile[] files) throws IOException {
        //上传
        String originalFilename = files[0].getOriginalFilename();
        byte [] byteArr = files[0].getBytes();
        InputStream inputStream = new ByteArrayInputStream(byteArr);
        OssInfo ossInfo = standardOssClient.upLoad(inputStream, originalFilename);
        log.info(ossInfo.toString());
        //下载
        standardOssClient.downLoad("D:/1.jpg","F2020032914165430900000003.jpeg");
    	//查看文件消息
        OssInfo info = standardOssClient.getInfo("F2020032914165430900000003.jpeg");
        log.info(info.toString());

        String basePath = standardOssClient.getBasePath();
    	//复制,重命名,移动,删除
        standardOssClient.copy("F2020032914165430900000003.jpeg","a.jpg");
        standardOssClient.copy("F2020032914165430900000003.jpeg","x.jpg");
        standardOssClient.rename("a.jpg","b.jpg");
        standardOssClient.move("x.jpg","a1.jpg");
        standardOssClient.delete("b.jpg");

        return Result.success();
    }

四、 注意事项

本地存储、SFTP、FTP三种实现方式主要基于hutoolopen in new window提供的FileUtilFileNameUtilAbstractFtp相关的工具。