Загружайте файлы с помощью Alibaba Cloud OSS

Java

В этой статье описывается, как использовать Java API для управления объектным хранилищем Alibaba Cloud OSS.

1. Консольная работа

Во-первых, давайте представим некоторые основные концепции объектного хранилища Alibaba Cloud OSS.

1.1 Вход в интерфейс хранилища объектов

Войдите в свою учетную запись Alibaba Cloud и войдите в интерфейс хранилища объектов, как показано на рисунке.

После входа он выглядит так, как показано на картинке.

1.2 Основные концепции OSS

Здесь я не буду больше рассказывать о том, как загружать и скачивать файлы в облаке Alibaba, Эти операции в основном можно найти, щелкнув по ним.

1.2.1 Bucket

Bucket — это по сути место для хранения объектов Alibaba Cloud OSS, которое, согласно компьютерному пониманию, можно понимать как диск (не знаю, уместна ли эта аналогия).

Процесс создания ведра очень прост, как показано на рисунке, достаточно заполнить соответствующее содержимое.

Здесь следует отметить, что конечные точки разных разделов разные, и конечные точки будут использоваться в последующем процессе использования API. Что касается типа хранилища и настроек, связанных с разрешениями на чтение и запись, они используются в соответствии со своими условиями.Здесь стандартное хранилище и частные разрешения используются в качестве примеров для ознакомления.

1.2.2 AccessKey

AccessKey — это секретный ключ для доступа к Alibaba Cloud API. Его также необходимо создать заранее. После создания нам нужно запомнить наш идентификатор AccessKey ID и секретный ключ доступа. Если вы его забудете, вы можете запросить его в расположении, указанном на фигура.

2 использование API

2.1 API-адрес

Общее использование объектного хранилища — это не что иное, как загрузка и скачивание файлов.Полный адрес API выглядит следующим образом:

help.aliyun.com/document_…

2.2 Подготовка к использованию API

Java очень прост в использовании, обратитесь к зависимостям непосредственно в Maven следующим образом:

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

2.3 Создание экземпляра OSSClient

Здесь нам нужно использовать конечную точку и AccessKey, о которых мы упоминали выше.Содержимое экземпляра конструкции следующее.

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

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

//todo 对OSS进行操作

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

2.4 Загрузка файлов

Существует примерно два распространенных способа загрузки файлов: один — вернуть адрес, по которому вы можете просмотреть файл, а другой — загрузить файл напрямую по этому адресу.

2.4.1 Загрузите файл и верните адрес, по которому вы можете просмотреть изображение

Есть несколько моментов, о которых следует помнить при загрузке файлов:

  • 1. Не повторяйте имя файла, иначе оно будет перезаписано.
  • 2. Рекомендуется создать папку для файлов разных дат для удобства различения.

Вот пример загрузки картинки локального рабочего стола.После загрузки в Bucket автоматически создается папка с датой в формате ггггММдд для хранения файла.Имя файла склеивается по текущей метке времени плюс случайное число. Поскольку возвращаемый URL-адрес содержит информацию о подписи, время истечения срока действия временно устанавливается равным одному часу, и при необходимости это время может быть продлено.

Полное содержание выглядит следующим образом:

package com.dalaoyang.upload;

import com.aliyun.oss.OSSClient;

import java.io.File;
import java.net.URL;
import java.security.SecureRandom;
import java.text.SimpleDateFormat;
import java.util.Date;

public class AliyunUpload {

    public static void main(String[] args) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        String endpoint = "http://oss-cn-beijing.aliyuncs.com";
        String accessKeyId = "LTAIRr3alAhROGTA";
        String accessKeySecret = "******";
        String fileName = "/Users/dalaoyang/Desktop/aliyun.jpeg";
        String bucketName = "dalaoyang-test";
        // 获取文件的后缀名
        String suffixName = fileName.substring(fileName.lastIndexOf("."));
        // 生成上传文件名
        String finalFileName = System.currentTimeMillis() + "" + new SecureRandom().nextInt(0x0400) + suffixName;
        String objectName = sdf.format(new Date()) + "/" + finalFileName;
        File file = new File(fileName);
        OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);

        ossClient.putObject(bucketName, objectName, file);
        // 设置URL过期时间为1小时。
        Date expiration = new Date(System.currentTimeMillis() + 3600 * 1000);
        // 生成以GET方法访问的签名URL,访客可以直接通过浏览器访问相关内容。
        URL url = ossClient.generatePresignedUrl(bucketName, objectName, expiration);
        ossClient.shutdown();
        System.out.println(url.toString());
    }
}

Формат обратного адреса следующий:

http://dalaoyang-test.oss-cn-beijing.aliyuncs.com/20190518/1558155342968407.jpeg?Expires=1558158948&OSSAccessKeyId=LTAIRr3alAhROGTA&Signature=%2BIjVpD%2BTWrRmSt4kU7axo6Cnqbw%3D

Доступ через браузер показан на рисунке:

Просмотрите в Alibaba Cloud OSS, как показано на рисунке, вы увидите, что соответствующая папка также создана.

2.4.2 Загрузите файл и верните адрес, по которому вы можете напрямую загрузить изображение

Это аналогично приведенному выше.Если вам нужно вернуть адрес, который можно скачать напрямую, вам нужно только установить contentDisposition файла на вложение.Полное содержание выглядит следующим образом:

package com.dalaoyang.upload;

import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.ObjectMetadata;

import java.io.File;
import java.net.URL;
import java.security.SecureRandom;
import java.text.SimpleDateFormat;
import java.util.Date;

public class AliyunUpload {

    public static void main(String[] args) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        String endpoint = "http://oss-cn-beijing.aliyuncs.com";
        String accessKeyId = "LTAIRr3alAhROGTA";
        String accessKeySecret = "******";
        String fileName = "/Users/dalaoyang/Desktop/WechatIMG4.png";
        String bucketName = "dalaoyang-test";
        // 获取文件的后缀名
        String suffixName = fileName.substring(fileName.lastIndexOf("."));
        // 生成上传文件名
        String finalFileName = System.currentTimeMillis() + "" + new SecureRandom().nextInt(0x0400) + suffixName;
        String objectName = sdf.format(new Date()) + "/" + finalFileName;
        File file = new File(fileName);

        ObjectMetadata meta = new ObjectMetadata();
        meta.setContentDisposition("attachment;");
        OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);

        ossClient.putObject(bucketName, objectName, file, meta);
        // 设置URL过期时间为1小时。
        Date expiration = new Date(System.currentTimeMillis() + 3600 * 1000);
        // 生成以GET方法访问的签名URL,访客可以直接通过浏览器访问相关内容。
        URL url = ossClient.generatePresignedUrl(bucketName, objectName, expiration);
        ossClient.shutdown();
        System.out.println(url.toString());
    }
}

Возвращаемый адрес на этот раз загружает файл прямо из браузера.

3 Резюме

Для операций Alibaba Cloud OSS по-прежнему существует множество способов воспроизведения, таких как загрузка и загрузка с индикатором выполнения, загрузка из нескольких частей и т. д. При необходимости вы можете играть в соответствии со сценой.