全部產品
Search
文件中心

Object Storage Service:Object Storage Service使用Python語言實現簽名Header上傳的樣本

更新時間:Feb 28, 2024

概述

Object Storage Service SDK提供了整合簽名、上傳和下載的SDK,但實際使用中,有時需要使用API的方式實現在簽名的情況下進行上傳和下載,本文以PutObject介面為例,提供了Python語言實現的樣本。

說明

建議優先使用OSS提供SDK,本文提供的只是簽名實現上傳樣本,實際使用中需要結合業務進行代碼改動。

詳細資料

Python 2.7使用PutObject介面實現範例程式碼如下。

# -*- coding: utf-8 -*-
import base64
import hmac
import sha
import urllib2
from datetime import datetime


accesskey = '您的accesskey';
accesskeysecret = '您的AccesskeySecret'
endpoint='oss-cn-hangzhou.aliyuncs.com'
bucket='您的Bucket名稱'
#您的上傳檔案路徑
object='mytest/test.png'
GMT_FORMAT = '%a, %d %b %Y %H:%M:%S GMT'


time = datetime.utcnow().strftime(GMT_FORMAT)
print(time)
signature = hmac.new(accesskeysecret,
"PUT\n\nimage/png\n"+time+"\n"+"/"+bucket+"/"+object,sha)
Signature = base64.b64encode(signature.digest())
print("Signature: %s" % Signature)
opener = urllib2.build_opener(urllib2.HTTPHandler)
with open("/Users/wanghe/Documents/20190717101549.png") as f:
data=f.read()
request = urllib2.Request("http://"+bucket+"."+endpoint+"/"+object, data=data)
request.add_header("Authorization", "OSS "+accesskey+":"+Signature)
request.add_header("Content-Type", "image/png")
request.add_header("Date", time)
request.get_method = lambda:"PUT"
url = opener.open(request)

相關文檔

在Header中包含簽名

適用於

  • Object Storage Service