详情页标题前

阿里云对象存储OSSPython简单上传-云淘科技

详情页1

简单上传是指通过put_object方法上传单个文件Object)。简单上传包括上传字符串、上传Bytes、上传Unicode字符、上传网络流和上传本地文件五种形式。

注意事项

  • 本文以华东1(杭州)外网Endpoint为例。如果您希望通过与OSS同地域的其他阿里云产品访问OSS,请使用内网Endpoint。关于OSS支持的Region与Endpoint的对应关系,请参见访问域名和数据中心。
  • 本文以OSS域名新建OSSClient为例。如果您希望通过自定义域名、STS等方式新建OSSClient,请参见Python初始化。
  • 要简单上传,您必须有oss:PutObject权限。具体操作,请参见为RAM用户授权自定义的权限策略。

注意事项

上传文件(Object)时,如果存储空间(Bucket)中已存在同名文件且用户对该文件有访问权限,则新添加的文件将覆盖原有文件。

上传文件时涉及填写的公共参数如下:

参数

说明

bucket_name

Bucket名称。

Bucket名称的命名规范如下:

  • 只能包括小写字母、数字和短划线(-)。

  • 必须以小写字母或者数字开头和结尾。

  • 长度必须在3~63字符之间。

object_name

Object完整路径。Object完整路径中不能包含Bucket名称。

Object命名规范如下:

  • 使用UTF-8编码。

  • 长度必须在1~1023字符之间。

  • 不能以正斜线(/)或者反斜线(\)开头。

上传字符串

以下代码用于将字符串上传到目标存储空间examplebucket中的exampleobject.txt文件。

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
# 填写Bucket名称。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')

# 上传文件。
# 如果需要在上传文件时设置文件存储类型(x-oss-storage-class)和访问权限(x-oss-object-acl),请在put_object中设置相关Header。
# headers = dict()
# headers["x-oss-storage-class"] = "Standard"
# headers["x-oss-object-acl"] = oss2.OBJECT_ACL_PRIVATE
# 填写Object完整路径和字符串。Object完整路径中不能包含Bucket名称。
# result = bucket.put_object('exampleobject.txt', 'Hello OSS', headers=headers)
result = bucket.put_object('exampleobject.txt', 'Hello OSS')

# HTTP返回码。
print('http status: {0}'.format(result.status))
# 请求ID。请求ID是本次请求的唯一标识,强烈建议在程序日志中添加此参数。
print('request_id: {0}'.format(result.request_id))
# ETag是put_object方法返回值特有的属性,用于标识一个Object的内容。
print('ETag: {0}'.format(result.etag))
# HTTP响应头部。
print('date: {0}'.format(result.headers['date']))

上传Bytes

以下代码用于将Bytes上传到目标存储空间examplebucket中的exampleobject.txt文件。

# -*- coding: utf-8 -*-

import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
# 填写Bucket名称。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')

# 填写Object完整路径和Bytes内容。Object完整路径中不能包含Bucket名称。
bucket.put_object('exampleobject.txt', b'Hello OSS')

上传Unicode字符

以下代码用于将Unicode字符上传到目标存储空间examplebucket中的exampleobject.txt文件。上传Unicode字符时,OSS会将Unicode字符自动转换为UTF-8编码的Bytes进行上传。

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
# 填写Bucket名称。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')

# 填写Object完整路径和Unicode字符。Object完整路径中不能包含Bucket名称。
bucket.put_object('exampleobject.txt', u'Hello OSS')

上传网络流

以下代码用于将网络流上传到目标存储空间examplebucket中的exampleobject.txt文件。OSS将网络流视为可迭代对象(Iterable),并以Chunked Encoding的方式上传。

# -*- coding: utf-8 -*-
import oss2
import requests
from oss2.credentials import EnvironmentVariableCredentialsProvider

# 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
# 填写Bucket名称。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')

# requests.get返回的是一个可迭代对象(Iterable),此时Python SDK会通过Chunked Encoding方式上传。
# 填写网络流地址。
input = requests.get('http://www.aliyun.com')
# 填写Object完整路径。Object完整路径中不能包含Bucket名称。
bucket.put_object('exampleobject.txt', input)

上传本地文件

以下代码用于将本地文件examplefile.txt上传到目标存储空间examplebucket中的exampleobject.txt文件。OSS将本地文件视为文件对象(File Object),上传时必须以二进制方式打开(例如rb模式)。

# -*- coding: utf-8 -*-
import oss2
import os
from oss2.credentials import EnvironmentVariableCredentialsProvider

# 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
# 填写Bucket名称。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')

# 必须以二进制的方式打开文件。
# 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件。
with open('D:\localpath\examplefile.txt', 'rb') as fileobj:
    # Seek方法用于指定从第1000个字节位置开始读写。上传时会从您指定的第1000个字节位置开始上传,直到文件结束。
    fileobj.seek(1000, os.SEEK_SET)
    # Tell方法用于返回当前位置。
    current = fileobj.tell()
    # 填写Object完整路径。Object完整路径中不能包含Bucket名称。
    bucket.put_object('exampleobject.txt', fileobj)

Python SDK还提供了更便捷的方法用于上传本地文件。

# 填写Object完整路径和本地文件的完整路径。Object完整路径中不能包含Bucket名称。
# 如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件。
bucket.put_object_from_file('exampleobject.txt', 'D:\localpath\examplefile.txt')

常见问题

文件上传后,如何获取文件URL?

通过SDK上传文件后,结果中不会返回文件URL。关于如何获取文件URL的具体步骤,请参见获取单个或多个文件的URL。

如何检查上传后文件大小与本地文件大小是否一致?

OSS在上传和下载文件时默认开启CRC数据校验,确保上传和下载过程的数据完整性。如果上传后文件大小与本地文件大小不一致,则报错InconsistentError。

相关文档

  • 关于简单上传的完整示例代码,请参见GitHub示例。

  • 关于简单上传的API接口说明,请参见PutObject。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/157903.html

(0)
上一篇 2023年12月10日 上午1:11
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云对象存储OSS使用OSS-HDFS服务回收站-云淘科技

    使用OSS-HDFS回收站时,需要客户端将待删除文件挪至指定目录,并由服务端定时清理该目录下的数据。 删除文件说明 当您从OSS-HDFS服务删除文件时,文件不会立即被删除,而是转至/user//.Trash/Current目录下。 经过30分钟后,Current目录下的文件会被转至/user//.Trash/目录下。 说明 以Unix时间戳的形式展示,表示…

    阿里云对象存储 2023年12月10日
  • 阿里云对象存储OSS如何选择OSS地域-云淘科技

    本文介绍在创建OSS的存储空间(Bucket)时如何选择合适的地域。 选择OSS地域时,通常需要考虑以下几个方面: 用户所在地 云产品之间的关系 资源价格 产品功能 用户所在地 如果您的OSS资源需要开放给其他用户访问,且希望用户有良好的访问体验,则必须考虑用户访问时的网络延迟。除了通信线路的质量外,距离是影响网络延迟的一个重要因素。 例如以杭州的用户为例,…

    阿里云对象存储 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云对象存储OSSlogging(日志转存)-云淘科技

    访问对象存储OSS的过程中会产生大量的访问日志,您可以通过日志转存功能将这些日志按照固定命名规则,以小时为单位生成日志文件写入您指定的Bucket。您可以通过logging命令开启、查询、关闭Bucket的日志转存配置。 注意事项 本文各命令行示例均基于Linux 64位系统,其他系统请将命令开头的./ossutil64替换成对应的Binary名称。详情请参…

    阿里云对象存储 2023年12月10日
  • 阿里云对象存储OSSPython生命周期-云淘科技

    OSS支持设置Bucket生命周期(Lifecycle)规则,自动删除过期的文件(Object)和碎片,或将到期的文件转储为低频或归档存储类型,从而节省存储费用。本文介绍如何管理存储空间(Bucket)的生命周期规则。 注意事项 本文以华东1(杭州)外网Endpoint为例。如果您希望通过与OSS同地域的其他阿里云产品访问OSS,请使用内网Endpoint。…

    阿里云对象存储 2023年12月10日
  • 阿里云对象存储OSS监控、诊断和故障排除-云淘科技

    相对于传统应用程序,开发云端应用虽然降低了用户在基础设施搭建、运维等方面的成本,但却增大了监控、诊断和故障排查的难度。OSS存储服务为您提供了丰富的监控和日志信息,帮助您深刻洞察程序行为,及时发现并快速定位问题。 本文主要描述如何使用OSS监控服务、日志记录功能以及其他第三方工具来监控、诊断和排查应用业务使用OSS存储服务时遇到的相关问题,帮助您达到如下目标…

    阿里云对象存储 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。