日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Python簡(jiǎn)單上傳

更新時(shí)間:

簡(jiǎn)單上傳是指通過(guò)put_object方法上傳單個(gè)文件(Object)。簡(jiǎn)單上傳包括上傳字符串、上傳Bytes、上傳Unicode字符、上傳網(wǎng)絡(luò)流和上傳本地文件五種形式。

注意事項(xiàng)

  • 本文以華東1(杭州)外網(wǎng)Endpoint為例。如果您希望通過(guò)與OSS同地域的其他阿里云產(chǎn)品訪問(wèn)OSS,請(qǐng)使用內(nèi)網(wǎng)Endpoint。關(guān)于OSS支持的RegionEndpoint的對(duì)應(yīng)關(guān)系,請(qǐng)參見(jiàn)OSS地域和訪問(wèn)域名。

  • 本文以OSS域名新建OSSClient為例。如果您希望通過(guò)自定義域名、STS等方式新建OSSClient,請(qǐng)參見(jiàn)初始化。

  • 要簡(jiǎn)單上傳,您必須有oss:PutObject權(quán)限。具體操作,請(qǐng)參見(jiàn)RAM用戶授權(quán)自定義的權(quán)限策略

注意事項(xiàng)

上傳文件(Object)時(shí),如果存儲(chǔ)空間(Bucket)中已存在同名文件且用戶對(duì)該文件有訪問(wèn)權(quán)限,則新添加的文件將覆蓋原有文件。

上傳文件時(shí)涉及填寫的公共參數(shù)如下:

參數(shù)

說(shuō)明

bucket_name

Bucket名稱。

Bucket名稱的命名規(guī)范如下:

  • 只能包括小寫字母、數(shù)字和短劃線(-)。

  • 必須以小寫字母或者數(shù)字開(kāi)頭和結(jié)尾。

  • 長(zhǎng)度必須在3~63字符之間。

object_name

Object完整路徑。Object完整路徑中不能包含Bucket名稱。

Object命名規(guī)范如下:

  • 使用UTF-8編碼。

  • 長(zhǎng)度必須在1~1023字符之間。

  • 不能以正斜線(/)或者反斜線(\)開(kāi)頭。

上傳字符串

以下代碼用于將字符串上傳到目標(biāo)存儲(chǔ)空間examplebucket中的exampleobject.txt文件。

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

# 從環(huán)境變量中獲取訪問(wèn)憑證。運(yùn)行本代碼示例之前,請(qǐng)確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# 填寫B(tài)ucket所在地域?qū)?yīng)的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"

# 填寫Endpoint對(duì)應(yīng)的Region信息,例如cn-hangzhou。注意,v4簽名下,必須填寫該參數(shù)
region = "cn-hangzhou"

# yourBucketName填寫存儲(chǔ)空間名稱。
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# 上傳文件。
# 如果需要在上傳文件時(shí)設(shè)置文件存儲(chǔ)類型(x-oss-storage-class)和訪問(wèn)權(quán)限(x-oss-object-acl),請(qǐng)?jiān)趐ut_object中設(shè)置相關(guān)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))
# 請(qǐng)求ID。請(qǐng)求ID是本次請(qǐng)求的唯一標(biāo)識(shí),強(qiáng)烈建議在程序日志中添加此參數(shù)。
print('request_id: {0}'.format(result.request_id))
# ETag是put_object方法返回值特有的屬性,用于標(biāo)識(shí)一個(gè)Object的內(nèi)容。
print('ETag: {0}'.format(result.etag))
# HTTP響應(yīng)頭部。
print('date: {0}'.format(result.headers['date']))

上傳Bytes

以下代碼用于將Bytes上傳到目標(biāo)存儲(chǔ)空間examplebucket中的exampleobject.txt文件。

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

import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# 從環(huán)境變量中獲取訪問(wèn)憑證。運(yùn)行本代碼示例之前,請(qǐng)確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# 填寫B(tài)ucket所在地域?qū)?yīng)的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"

# 填寫Endpoint對(duì)應(yīng)的Region信息,例如cn-hangzhou。注意,v4簽名下,必須填寫該參數(shù)
region = "cn-hangzhou"

# yourBucketName填寫存儲(chǔ)空間名稱。
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# 填寫Object完整路徑和Bytes內(nèi)容。Object完整路徑中不能包含Bucket名稱。
bucket.put_object('exampleobject.txt', b'Hello OSS')

上傳Unicode字符

以下代碼用于將Unicode字符上傳到目標(biāo)存儲(chǔ)空間examplebucket中的exampleobject.txt文件。上傳Unicode字符時(shí),OSS會(huì)將Unicode字符自動(dòng)轉(zhuǎn)換為UTF-8編碼的Bytes進(jìn)行上傳。

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

# 從環(huán)境變量中獲取訪問(wèn)憑證。運(yùn)行本代碼示例之前,請(qǐng)確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# 填寫B(tài)ucket所在地域?qū)?yīng)的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"

# 填寫Endpoint對(duì)應(yīng)的Region信息,例如cn-hangzhou。注意,v4簽名下,必須填寫該參數(shù)
region = "cn-hangzhou"

# yourBucketName填寫存儲(chǔ)空間名稱。
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

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

上傳網(wǎng)絡(luò)流

以下代碼用于將網(wǎng)絡(luò)流上傳到目標(biāo)存儲(chǔ)空間examplebucket中的exampleobject.txt文件。OSS將網(wǎng)絡(luò)流視為可迭代對(duì)象(Iterable),并以Chunked Encoding的方式上傳。

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

# 從環(huán)境變量中獲取訪問(wèn)憑證。運(yùn)行本代碼示例之前,請(qǐng)確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# 填寫B(tài)ucket所在地域?qū)?yīng)的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"

# 填寫Endpoint對(duì)應(yīng)的Region信息,例如cn-hangzhou。注意,v4簽名下,必須填寫該參數(shù)
region = "cn-hangzhou"

# yourBucketName填寫存儲(chǔ)空間名稱。
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# requests.get返回的是一個(gè)可迭代對(duì)象(Iterable),此時(shí)Python SDK會(huì)通過(guò)Chunked Encoding方式上傳。
# 填寫網(wǎng)絡(luò)流地址。
input = requests.get('http://www.aliyun.com')
# 填寫Object完整路徑。Object完整路徑中不能包含Bucket名稱。
bucket.put_object('exampleobject.txt', input)

上傳本地文件

以下代碼用于將本地文件examplefile.txt上傳到目標(biāo)存儲(chǔ)空間examplebucket中的exampleobject.txt文件。OSS將本地文件視為文件對(duì)象(File Object),上傳時(shí)必須以二進(jìn)制方式打開(kāi)(例如rb模式)。

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

# 從環(huán)境變量中獲取訪問(wèn)憑證。運(yùn)行本代碼示例之前,請(qǐng)確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# 填寫B(tài)ucket所在地域?qū)?yīng)的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"

# 填寫Endpoint對(duì)應(yīng)的Region信息,例如cn-hangzhou。注意,v4簽名下,必須填寫該參數(shù)
region = "cn-hangzhou"

# yourBucketName填寫存儲(chǔ)空間名稱。
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# 必須以二進(jìn)制的方式打開(kāi)文件。
# 填寫本地文件的完整路徑。如果未指定本地路徑,則默認(rèn)從示例程序所屬項(xiàng)目對(duì)應(yīng)本地路徑中上傳文件。
with open('D:\\localpath\\examplefile.txt', 'rb') as fileobj:
    # Seek方法用于指定從第1000個(gè)字節(jié)位置開(kāi)始讀寫。上傳時(shí)會(huì)從您指定的第1000個(gè)字節(jié)位置開(kāi)始上傳,直到文件結(jié)束。
    fileobj.seek(1000, os.SEEK_SET)
    # Tell方法用于返回當(dāng)前位置。
    current = fileobj.tell()
    # 填寫Object完整路徑。Object完整路徑中不能包含Bucket名稱。
    bucket.put_object('exampleobject.txt', fileobj)

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

# 填寫Object完整路徑和本地文件的完整路徑。Object完整路徑中不能包含Bucket名稱。
# 如果未指定本地路徑,則默認(rèn)從示例程序所屬項(xiàng)目對(duì)應(yīng)本地路徑中上傳文件。
bucket.put_object_from_file('exampleobject.txt', 'D:\\localpath\\examplefile.txt')

常見(jiàn)問(wèn)題

文件上傳后,如何獲取文件URL?

通過(guò)SDK上傳文件后,結(jié)果中不會(huì)返回文件URL。關(guān)于如何獲取文件URL的具體步驟,請(qǐng)參見(jiàn)使用文件URL分享文件。

如何檢查上傳后文件大小與本地文件大小是否一致?

OSS在上傳和下載文件時(shí)默認(rèn)開(kāi)啟CRC數(shù)據(jù)校驗(yàn),確保上傳和下載過(guò)程的數(shù)據(jù)完整性。如果上傳后文件大小與本地文件大小不一致,則報(bào)錯(cuò)InconsistentError

相關(guān)文檔

  • 關(guān)于簡(jiǎn)單上傳的完整示例代碼,請(qǐng)參見(jiàn)GitHub示例。

  • 關(guān)于簡(jiǎn)單上傳的API接口說(shuō)明,請(qǐng)參見(jiàn)PutObject。