华为云OBS上传下载文件对象
本教程使用python3.X版本
- 华为云SDK链接地址
https://support.huaweicloud.com/sdkreference-obs/obs_02_0001.html
- 安装环境:
使用 pip 安装(推荐)
1. 运行pip -V命令查看pip版本并确保pip已安装。
2. 运行 pip install esdk-obs-python --trusted-host pypi.org命令执行安装。
说明
● 如果您的环境尚未安装pip,请参见pip官网安装。
● 如果您使用的是Windows操作系统,当运行pip命令时提示“不是内部或外部命令”,请在 Path环境变量中增加pip的安装目录(一般为Python所在目录的Scripts文件夹)。
● 您可能需要重启电脑使环境变量生效。
创建 AK、SK
OBS:通过用户帐户中的AK和SK进行签名验证,确保通过授权的帐户才能访问指定的OBS资源。
以下是对AK和SK的解释说明:
● AK:Access Key ID,接入键标识,用户在对象存储服务系统中的接入键标识,一
个接入键标识唯一对应一个用户,一个用户可以同时拥有多个接入键标识。对象 存储服务系统通过接入键标识识别访问系统的用户。 ●
SK:Secret Access Key,安全接入键,用户在对象存储服务系统中的安全接入
键,是用户访问对象存储服务系统的密钥,用户根据安全接入键和请求头域生成鉴权信息。安全接入键和接入键标识一一对应。
创建访问密钥的操作步骤如下:
- 登录管理控制台。
- 单击页面右上角的用户名,并选择“我的凭证”。
- 在“我的凭证”页面,单击左侧导航栏的“访问密钥”。
- 在“访问密钥”页面,单击“新增访问密钥”。 说明 每个用户最多可创建两个有效的访问密钥。
- 在弹出的“新增访问密钥”对话框中,输入描述内容(建议),单击“确定”。
- (可选)在弹出的“身份验证”对话框中,选择合适的验证方式进行验证,单击“确定”
- 在弹出的“创建成功”提示框中,单击“立即下载”后,密钥会直接保存到浏览器默认的下载文件夹中。
- 打开下载下来的“credentials.csv”文件既可获取到访问密钥(AK和SK)。
在密钥文件中,Access Key ID列对应的值即AK,Secret Access Key列对应的值即SK。
为防止访问密钥泄露,建议您将其保存到安全的位置。如果用户在此提示框中单击“取消”,则不会下载密钥,后续也将无法重新下载。如果需要使用访问密钥,可以重新创建新的访问密钥。
-
创建桶
首先呢,我们在华为云的服务列表里的存储类里面找到对象存储服务OBS。进入之后我们点击右上角的创建桶。桶名称设置为 “tong_name”
下面是创建成功的图
下面的操作是在桶名称为 tong_name 中操作上传、下载
server在桶详情中查找
- 上传文件
# 引入模块
from obs import ObsClient
# 创建ObsClient实例
obsClient = ObsClient(
access_key_id='K2AJOTf$%HretvUdfFYGB8', # 这里替换你的
secret_access_key='PD7R5h6LvK7OSeE976d#8532IopyARAFyJd8LnjF', # 这里替换你的
server='obs.cn-no3rh32-334.myloud.com' # 这里替换你的
)
# 使用访问OBS
try:
from obs import PutObjectHeader
headers = PutObjectHeader()
headers.contentType = 'text/plain'
resp = obsClient.putFile(
'tong_name',
'file_name.xlsx', # 这里是上传后的文件名
'/xxx/xxx/upload_file.xlsx', # 这里替换为你本地文件的路径
metadata={'meta1': 'value1', 'meta2': 'value2'},
headers=headers,
progressCallback=callback
)
if resp.status < 300:
print(resp)
print('objectUrl:',resp.body.objectUrl)
print('requestId:', resp.requestId)
print('etag:', resp.body.etag)
print('versionId:', resp.body.versionId)
print('storageClass:', resp.body.storageClass)
else:
print(resp)
print('errorCode:', resp.errorCode)
print('errorMessage:', resp.errorMessage)
except:
import traceback
print(traceback.format_exc())
# 关闭obsClient
obsClient.close()
- 下载文件
# 引入模块
from obs import ObsClient
# 创建ObsClient实例
obsClient = ObsClient(
access_key_id='K2AJOTf$%HretvUdfFYGB8', # 这里替换你的
secret_access_key='PD7R5h6LvK7OSeE976d#8532IopyARAFyJd8LnjF', # 这里替换你的
server='obs.cn-no3rh32-334.myloud.com' # 这里替换你的
)
# 使用访问OBS
try:
resp = obsClient.getObject(
'tong_name', # 桶名称
'file_name.xlsx', # 这里为你要下载的文件名称
downloadPath='./localfile.xlsx' # ./表示下载到当前文件所在目录
)
if resp.status < 300:
print('requestId:', resp.requestId)
print('url:', resp.body.url)
else:
print('errorCode:', resp.errorCode)
print('errorMessage:', resp.errorMessage)
except:
import traceback
print(traceback.format_exc())
# 关闭obsClient
obsClient.close()
感谢观看,希望对读者有所帮助,有疑问可以评论,不定时回复