LOADING

加载过慢请开启缓存 浏览器默认开启

oss

阿里云OSS对象存储功能配置笔记

使用 Spring BootPython 进行阿里云OSS对象存储管理的配置和代码示例。

1. Spring Boot 阿里云OSS SDK配置

Spring Boot 项目中,首先需要在 pom.xml 中添加阿里云OSS SDK的依赖:

<!-- 阿里云OSS依赖坐标 -->
<dependency>
  <groupId>com.aliyun.oss</groupId>
  <artifactId>aliyun-sdk-oss</artifactId>
  <version>3.15.1</version>
</dependency>

Java代码示例

package com.itheima.utils;

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;

import java.io.InputStream;

public class AliOssUtil {

    // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
    private static final String ENDPOINT = "https://oss-cn-beijing.aliyuncs.com";
    private static final String ACCESS_KEY_ID = "your-access-key-id";
    private static final String ACCESS_KEY_SECRET = "your-access-key-secret";
    private static final String BUCKET_NAME = "your-bucket-name";

    public static String uploadFile(String objectName, InputStream in) throws Exception {

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(ENDPOINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);
        String url = "";
        try {
            // 创建PutObjectRequest对象。
            PutObjectRequest putObjectRequest = new PutObjectRequest(BUCKET_NAME, objectName, in);

            // 上传文件。
            PutObjectResult result = ossClient.putObject(putObjectRequest);

            // URL格式: https://bucket名称.区域节点/objectName
            url = "https://" + BUCKET_NAME + "." + ENDPOINT.substring(ENDPOINT.lastIndexOf("/") + 1) + "/" + objectName;
        } catch (OSSException | ClientException e) {
            e.printStackTrace();
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }

        return url;
    }
}

说明:

  • ACCESS_KEY_IDACCESS_KEY_SECRET 为阿里云的访问凭证。
  • BUCKET_NAME 为存储桶名称。
  • 通过 OSSClientBuilder 来创建OSS客户端实例,并调用 putObject() 上传文件。

2. Python 阿里云OSS SDK配置

Python 项目中,可以通过 config.ini 配置文件存储阿里云的访问凭证,并通过 oss2 SDK 上传文件。

config.ini 配置文件

[Aircraft]
alibaba_cloud_access_key_id = your-access-key-id
alibaba_cloud_access_key_secret = your-access-key-secret

Python代码示例

# -*- coding: utf-8 -*-
import oss2
import configparser

# 读取配置文件
config = configparser.ConfigParser()
config.read('config.ini')

# 从配置文件中获取Access Key ID和Access Key Secret
access_key_id = config.get('Aircraft', 'alibaba_cloud_access_key_id')
access_key_secret = config.get('Aircraft', 'alibaba_cloud_access_key_secret')

# 使用RAM用户的访问密钥配置访问凭证
auth = oss2.Auth(access_key_id, access_key_secret)

# Endpoint以华东1(杭州)为例,其它Region请按实际情况填写
endpoint = 'https://oss-cn-beijing.aliyuncs.com'
bucket_name = 'your-bucket-name'
bucket = oss2.Bucket(auth, endpoint, bucket_name)

def upload_file(object_name, file_path):
    """上传文件到阿里云OSS"""
    url = ""
    try:
        # 上传文件
        with open(file_path, 'rb') as file_stream:
            bucket.put_object(object_name, file_stream)

        # 生成文件的访问URL
        url = f"https://{bucket_name}.{endpoint.split('//')[1]}/{object_name}"
        print("File uploaded successfully. URL:", url)
    except oss2.exceptions.OssError as oe:
        print("Error:", oe.message)
    except Exception as e:
        print("Caught an Exception:", e)

    return url

说明:

  • config.ini 存储阿里云的访问凭证,以避免直接在代码中硬编码。
  • 使用 oss2.Bucket 对象将文件上传至OSS,并生成对应的文件URL。

总结

  • Spring Boot 通过引入阿里云OSS SDK依赖,使用Java代码实现文件上传功能,并返回文件的访问URL。
  • Python 通过 configparser 读取配置文件,结合 oss2 SDK 实现文件上传功能。