«Универсальная» совместимость с файловым хранилищем всех облачных поставщиков Spring Boot.

Spring Boot Java

задний план

С развитием Интернета сегодня почти все поставщики облачных услуг предоставляют"Служба хранения объектов". Массивная, безопасная, недорогая и очень надежная служба облачного хранилища, подходящая для хранения файлов любого типа. Гибкое расширение емкости и вычислительной мощности, несколько типов хранения на выбор и всесторонняя оптимизация затрат на хранение.

Когда мы используем соответствующие продукты облачных поставщиков, нам нужно только ввести SDK, предоставленный соответствующей попыткой, и внедрить его в соответствии с его документацией по разработке. Однако, когда у нас есть доступ ко многим облачным поставщикам (или когда интерфейс может быть перенесен горизонтально), нам необходимо основывать интерфейс на целевом поставщике."Деструктивная модификация".

Ниже приведены примеры загрузки API SDK нескольких производителей:

Али Клауд

// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";

// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

// 创建PutObjectRequest对象。
String content = "Hello OSS";
PutObjectRequest putObjectRequest = new PutObjectRequest("<yourBucketName>", "<yourObjectName>", new ByteArrayInputStream(content.getBytes()));

// 上传字符串。
ossClient.putObject(putObjectRequest);

// 关闭OSSClient。
ossClient.shutdown();

ОБЛАКО HUAWEI

String endPoint = "https://your-endpoint";
String ak = "*** Provide your Access Key ***";
String sk = "*** Provide your Secret Key ***";
// 创建ObsClient实例
ObsClient obsClient = new ObsClient(ak, sk, endPoint);

obsClient.putObject("bucketname", "objectname", new File("localfile")); // localfile为待上传的本地文件路径,需要指定到具体的文件名

Семь Ниуюн

Configuration cfg = new Configuration(Region.region0());
UploadManager uploadManager = new UploadManager(cfg);
String accessKey = "your access key";
String secretKey = "your secret key";
String localFilePath = "/home/qiniu/test.png";
String key = null;

Auth auth = Auth.create(accessKey, secretKey);
String upToken = auth.uploadToken(bucket);
Response response = uploadManager.put(localFilePath, key, upToken);

решение

Протокол Amazon S3

Amazon является первым поставщиком, предоставившим услуги хранения объектов, и сформулировал отраслевые стандарты, связанные с хранением файлов, что означает, что для доступа к поставщикам хранилищ файлов и промежуточному программному обеспечению, совместимым с этим протоколом, необходимо реализовать только протокол S3. Конечно, протокол S3 является не только стандартом требований к технической реализации, но также предъявляет особые требования к удобству использования.

Совместимость с местными поставщиками облачных услуг по протоколу S3.

название адрес
Али Клауд https://www.aliyun.com
ОБЛАКО HUAWEI https://www.huaweicloud.com
Тенсент Облако https://cloud.tencent.com
Семь Ниуюн https://www.qiniu.com
Цзиньшань Клауд https://www.ksyun.com

как пользоваться

  • Импорт зависимостей. Внедрение этой зависимости устраняет необходимость в использовании SDK поставщика облачных услуг.
<dependency>
    <groupId>com.pig4cloud.plugin</groupId>
    <artifactId>oss-spring-boot-starter</artifactId>
    <version>0.0.2</version>
</dependency>
  • Хранение профиля
oss:
  path-style-access: false    #请求路径是否 XXX/{bucketName}
  endpoint: s3-cn-east-1.qiniucs.com
  access-key: xxx    # 云厂商提供的key
  secret-key: xxx    # 云厂商提供的密钥
  bucketName: pig4cloud     # 上文创建的桶名称
  • действовать

@Autowire
private final OssTemplate ossTemplate;

ossTemplate.putObject(CommonConstants.BUCKET_NAME, fileName, file.getInputStream());

Поддерживает самодельное файловое хранилище, такое как MINIO

  • Создать мини
docker run -p 9000:9000 --name minio1 \
  -e "MINIO_ACCESS_KEY=lengleng" \
  -e "MINIO_SECRET_KEY=lengleng" \
  minio/minio server /data
  • Настроить параметры минио
# 文件系统
oss:
  path-style-access: true
  endpoint: http://IP:9000
  access-key: lengleng
  secret-key: lengleng
  bucketName: lengleng
  • Просто загрузите с помощью OssTemplate

Адрес источника:

GitHub.com/ass-things/ОС…Добро пожаловать в форк-расширения