华为云OBS上传下载文件对象(通过python-SDK)

华为云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,安全接入键,用户在对象存储服务系统中的安全接入
键,是用户访问对象存储服务系统的密钥,用户根据安全接入键和请求头域生成鉴权信息。安全接入键和接入键标识一一对应。

创建访问密钥的操作步骤如下:

  1. 登录管理控制台。
  2. 单击页面右上角的用户名,并选择“我的凭证”。
  3. 在“我的凭证”页面,单击左侧导航栏的“访问密钥”。
  4. 在“访问密钥”页面,单击“新增访问密钥”。 说明 每个用户最多可创建两个有效的访问密钥。
    在这里插入图片描述
  5. 在弹出的“新增访问密钥”对话框中,输入描述内容(建议),单击“确定”。
    在这里插入图片描述
  6. (可选)在弹出的“身份验证”对话框中,选择合适的验证方式进行验证,单击“确定”
    在这里插入图片描述
  7. 在弹出的“创建成功”提示框中,单击“立即下载”后,密钥会直接保存到浏览器默认的下载文件夹中。
    在这里插入图片描述
  8. 打开下载下来的“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()

感谢观看,希望对读者有所帮助,有疑问可以评论,不定时回复

### 华为云 SDK 的使用说明 华为云提供了丰富的开发工具包(Software Development Kit, SDK),支持开发者快速集成并调用其服务接口。以下是关于如何获取使用华为云 SDK 的详细介绍。 #### 1. 华为云 SDK下载地址 华为云官方文档中提供了多种编程语言SDK 下载链接以及安装指南。可以通过以下方式找到适合的语言版本: - 访问华为云官网中的 **开发者中心** 页面[^2]。 - 进入对应的服务页面,例如对象存储服务(Object Storage Service, OBS)或者弹性云服务器(Elastic Cloud Server, ECS)。 - 在服务详情页中查找“SDK API 参考”部分,点击进入即可查看不同语言的支持情况及其对应的下载地址。 目前支持的主要语言包括但不限于 Python、Java、Go、Node.js 等。 #### 2. 安装与配置方法 以 Python 版本为例,介绍如何安装 HuaweiCloud SDK 并完成基本配置: ##### (1) 安装依赖库 通过 pip 工具可以轻松安装所需模块: ```bash pip install huaweicloudsdkcore huaweicloudsdkecs huaweicloudsdkobs ``` 上述命令分别代表核心组件、针对 ECS 的扩展功能以及面向 OBS 存储操作的功能集合。 ##### (2) 配置认证参数 为了能够成功连接到云端资源,在初始化客户端实例之前需设置必要的安全凭证信息,比如 `AK/SK` 对(Access Key ID / Secret Access Key)。这些密钥可通过 IAM 控制台生成。 示例代码如下所示: ```python from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkecs.v2 import * # 创建基础认证对象 ak = 'your_access_key' sk = 'your_secret_key' project_id = 'your_project_id' credentials = BasicCredentials(ak, sk, project_id) # 初始化客户端 client = EcsClient(credentials, region="cn-north-4") # 替换为目标区域名 ``` 此处需要注意的是,实际部署过程中应妥善保管敏感数据,避免泄露风险。 #### 3. 接口调用示例 下面给出一段简单的例子来演示如何利用该 SDK 实现文件上传OBS 功能: ```python import os from huaweicloudsdkcore.auth.credentials import GlobalCredentials from huaweicloudsdkobs.v1.region.obs_region import ObsRegion from huaweicloudsdkobs.v1 import * def upload_file_to_obs(bucket_name, object_key, local_path): ak = 'your_ak_here' sk = 'your_sk_here' credentials = GlobalCredentials(ak, sk).with_scope('urn:huawei:iam::xxx:role/admin') client = ObsClient.new_builder() \ .with_credentials(credentials) \ .with_region(ObsRegion.cn_north_4) \ .build() try: response = client.put_object( PutObjectRequest( bucket=bucket_name, key=object_key, body=open(local_path, 'rb') ) ) if response.status_code == 200: print(f"File {local_path} uploaded successfully.") else: print("Failed to upload file:", response.error_message) except Exception as e: print(e) if __name__ == '__main__': upload_file_to_obs('test-bucket', 'example.jpg', './images/example.jpg') ``` 此脚本实现了将本地路径下的图片文件传输到指定 Bucket 中的操作过程[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值