postman使用post方法向华为云obs桶上传文件和图片
一句话总结:postman使用post方法向华为云obs桶上传文件和图片。记录下过程。
1、 使用步骤
创建华为云OBS桶 |
4、 什么是华为云OBS? 对象存储服务(Object Storage Service)是一款稳定、安全、高效、易用的华为云存储服务,具备标准Restful API接口,可存储任意数量和形式的非结构化数据。
2、进入华为云的OBS服务,进入“管理控制台”。点击“创建桶”。 3、取个桶名字bucket-guxiaobei。 4、OBS桶创建成功。 5、点击桶名,可以查看OBS基本信息。可以看到我的OBS桶访问域名bucket-guxiaobei.obs.cn-north-4.myhuaweicloud.com
|
获取AK和SK |
4、 华为云OBS支持通过AK/SK认证方式进行认证鉴权,即使用Access Key ID(AK)/Secret Access Key(SK)加密的方法来验证某个请求发送者身份。 支持2种使用AK/SK的鉴权方法: (1)支持使用永久AK/SK鉴权。 (2)支持通过临时AK/SK和securitytoken进行认证鉴权。
2、本文使用永久AK/SK。点击华为云用户名下的“我的凭证”。 (2)新增访问秘钥。 (3)创建成功后,点立即下载。 (4)打开excel文件,即可看到用户名下对应的AK/SK。
|
put与post区别 |
(1)PUT上传中参数通过请求头域传递;POST上传则作为消息体中的表单域传递。 (2)PUT上传需在URL中指定对象名;POST上传提交的URL为桶域名,无需指定对象名。
两者的请求行分别为: PUT /ObjectName HTTP/1.1 POST / HTTP/1.1
|
上传txt文档 |
1、准备一个a.txt文档。内容随意。 2、OBS服务支持基于浏览器的POST上传对象请求,此类请求的签名信息通过表单的方式上传。 请参考网址 https://support.huaweicloud.com/api-obs/obs_04_0012.html
POST上传对象:首先,创建一个安全策略,指定请求中需要满足的条件,比如:桶名、对象名前缀;然后,创建一个基于此策略的签名,需要签名的请求表单中必须包含有效的signature和policy;最后,创建一个表单将对象上传到桶中。 签名的计算过程如下: (1)对policy内容进行UTF-8编码。 (2)对第一步的结果进行Base64编码。 (3)使用SK对第二步的结果进行HMAC-SHA1签名计算。 (4)对第三步的结果进行Base64编码,得到签名。
StringToSign = Base64( UTF-8-Encoding-Of( policy ) ) Signature = Base64( HMAC-SHA1( YourSecretAccessKeyID, StringToSign ) )
3、复制下面python代码
import base64 import hashlib import hmac import urllib.parse
def sign_in_post(sk, policy): string_to_sign = base64.b64encode(policy.encode('UTF-8')) print('string_to_sign:\n', string_to_sign)
hashed = hmac.new(sk.encode('UTF-8'), string_to_sign, hashlib.sha1) sign = base64.b64encode(hashed.digest()).decode('UTF-8') print('sign:\n', sign)
return sign
sk = '此处省略sk实际内容' policy = '''{"expiration": "2021-09-02T12:00:00.000Z", "conditions":[ {"bucket":"bucket-guxiaobei"}, {"key":"a.txt"} ] }'''
sign_in_post(sk,policy)
|
4、在pycharm里运行,可以得到policy和signature。 (1)sk为你实际Secret Access Key内容。 (2)expiration为过期时间。 (3)bucket为你的桶名。 (4)key为期望上传对象的名字。
5、打开postman软件,选择POST方法。 (1)地址栏填入http:// 访问域名 / 。我写的是http://bucket-guxiaobei.obs.cn-north-4.myhuaweicloud.com/ (2)其他Headers参考下图。 注意:postman有一些自动生成的头信息auto-generated headers,并不都是必须项。
6、点击“Body”。类型选form-data。Select File,选择前面准备好的a.txt (1)key为期望上传对象的名字。 (2)AccessKeyId是我的Access Key Id值。 (3)signature是刚计算出来的签名。 (4)policy是刚计算出来的策略。 (5)file是实际上传的文件。约束条件:此参数必须为最后一个参数,否则此参数之后的参数会被丢弃;一个请求中只能含有一个file参数。
7、点击send,返回状态Status 204 No Content。
8、返回华为云OBS控制台。可以看到a.txt已经上传。点击下载。 8、完成txt上传。 注意:OBS并不强制本地文件名和OBS桶的期待文件名,保持一致。你可以本地a.txt,上传为b.txt。
|
上传jpg图片 |
1、准备一个b.jpg图片。内容随意。 2、OBS服务支持基于浏览器的POST上传对象请求,此类请求的签名信息通过表单的方式上传。 请参考网址 https://support.huaweicloud.com/api-obs/obs_04_0012.html
POST上传对象:首先,创建一个安全策略,指定请求中需要满足的条件,比如:桶名、对象名前缀;然后,创建一个基于此策略的签名,需要签名的请求表单中必须包含有效的signature和policy;最后,创建一个表单将对象上传到桶中。 签名的计算过程如下: (1)对policy内容进行UTF-8编码。 (2)对第一步的结果进行Base64编码。 (3)使用SK对第二步的结果进行HMAC-SHA1签名计算。 (4)对第三步的结果进行Base64编码,得到签名。
StringToSign = Base64( UTF-8-Encoding-Of( policy ) ) Signature = Base64( HMAC-SHA1( YourSecretAccessKeyID, StringToSign ) )
3、复制下面python代码
import base64 import hashlib import hmac import urllib.parse
def sign_in_post(sk, policy): string_to_sign = base64.b64encode(policy.encode('UTF-8')) print('string_to_sign:\n', string_to_sign)
hashed = hmac.new(sk.encode('UTF-8'), string_to_sign, hashlib.sha1) sign = base64.b64encode(hashed.digest()).decode('UTF-8') print('sign:\n', sign)
return sign
sk = '此处省略sk实际内容' policy = '''{"expiration": "2021-09-02T12:00:00.000Z", "conditions":[ {"bucket":"bucket-guxiaobei"}, {"key":"b.jpg"} ] }'''
sign_in_post(sk,policy)
|
4、在pycharm里运行,可以得到policy和signature。 (1)sk为你实际Secret Access Key内容。 (2)expiration为过期时间。 (3)bucket为你的桶名。 (4)key为期望上传对象的名字。
5、打开postman软件,选择POST方法。 (1)地址栏填入http:// 访问域名 / 。我写的是http://bucket-guxiaobei.obs.cn-north-4.myhuaweicloud.com/ (2)其他Headers参考下图。 注意:postman有一些自动生成的头信息auto-generated headers,并不都是必须项。
6、点击“Body”。类型选form-data。Select File,选择前面准备好的b.jpg (1)key为期望上传对象的名字。 (2)AccessKeyId是我的Access Key Id值。 (3)signature是刚计算出来的签名。 (4)policy是刚计算出来的策略。 (5)file是实际上传的文件。约束条件:此参数必须为最后一个参数,否则此参数之后的参数会被丢弃;一个请求中只能含有一个file参数。
7、点击send,返回状态Status 204 No Content。
8、返回华为云OBS控制台。可以看到b.jpg已经上传。点击下载。 8、完成jpg上传。 注意:OBS并不强制本地文件名和OBS桶的期待文件名,保持一致。你可以本地a.jpg,上传为b.jpg。
|
完成 |
ok。 |
关注 |
weixin关注公众号beigugong,或者扫描下方二维码。
|
相关 |
【上电即上华为云】故小北文章阶段性汇总 https://bbs.huaweicloud.com/blogs/263697 |
|
【上电即上华为云】华为云openCPU智联模组_Cat.1_MC615-CN-L610-CN(面向上华为云) https://bbs.huaweicloud.com/blogs/267413 |
|
【上电即上华为云】华为云openCPU智联模组_Cat.1_MC615-CN_L610-CN_OTA升级(面向OTA在线升级) https://bbs.huaweicloud.com/blogs/293310 |
|
【上电即上华为云】华为云smart智联Cat.1+PLC无线网关_3121N-IED_MC615-CN-L610-CN(面向Cat.1+PLC无线网关) https://bbs.huaweicloud.com/blogs/296169 |
|
【上电即上华为云】华为云openCPU智联模组_Cat.1_MC615-CN-L610-CN_云喇叭TTS语音 https://bbs.huaweicloud.com/blogs/296429 |
|
【上电即上华为云】华为云openCPU智联模组_Cat.1_MC615-CN-L610-CN_GPS定位器 https://bbs.huaweicloud.com/blogs/297178 |
|
postman使用put方法向华为云obs桶上传文件和图片 https://bbs.huaweicloud.com/blogs/298147 |
|
postman使用post方法向华为云obs桶上传文件和图片 本帖地址 |
|
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
评论(0)