阿里云OSS对象存储功能配置笔记
使用 Spring Boot
和 Python
进行阿里云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_ID
和ACCESS_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 实现文件上传功能。