华为云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. 在“访问密钥”页面,单击“新增访问密钥”。 说明 每个用户最多可创建两个有效的访问密钥。
    华为云OBS上传下载文件对象(通过python-SDK)_第1张图片
  5. 在弹出的“新增访问密钥”对话框中,输入描述内容(建议),单击“确定”。
    华为云OBS上传下载文件对象(通过python-SDK)_第2张图片
  6. (可选)在弹出的“身份验证”对话框中,选择合适的验证方式进行验证,单击“确定”
    华为云OBS上传下载文件对象(通过python-SDK)_第3张图片
  7. 在弹出的“创建成功”提示框中,单击“立即下载”后,密钥会直接保存到浏览器默认的下载文件夹中。
    华为云OBS上传下载文件对象(通过python-SDK)_第4张图片
  8. 打开下载下来的“credentials.csv”文件既可获取到访问密钥(AK和SK)。
    在密钥文件中,Access Key ID列对应的值即AK,Secret Access Key列对应的值即SK。
    为防止访问密钥泄露,建议您将其保存到安全的位置。如果用户在此提示框中单击“取消”,则不会下载密钥,后续也将无法重新下载。如果需要使用访问密钥,可以重新创建新的访问密钥。
  • 创建桶

    首先呢,我们在华为云的服务列表里的存储类里面找到对象存储服务OBS。进入之后我们点击右上角的创建桶。桶名称设置为 “tong_name”
    华为云OBS上传下载文件对象(通过python-SDK)_第5张图片
    下面是创建成功的图
    华为云OBS上传下载文件对象(通过python-SDK)_第6张图片

下面的操作是在桶名称为 tong_name 中操作上传、下载

server在桶详情中查找
华为云OBS上传下载文件对象(通过python-SDK)_第7张图片

  • 上传文件
# 引入模块
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()

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

你可能感兴趣的:(python,python,华为云,开发语言)