1、准备一个1.jpg图片。内容随意。 2、在pycharm里运行,可以得到policy和signature。 (1)sk为你实际Secret Access Key内容。 (2)expiration为过期时间。 (3)bucket为你的桶名。 (4)key为期望上传对象的名字。 3、打开postman软件,选择POST方法。 (1)地址栏填入http:// 访问域名 / 。我写的是http://bucket-guxiaobei.obs.cn-north-4.myhuaweicloud.com/ (2)其他Headers参考下图。 注意:postman有一些自动生成的头信息auto-generated headers,并不都是必须项。 4、点击“Body”。类型选form-data。Select File,选择前面准备好的b.jpg (1)key为期望上传对象的名字。 (2)AccessKeyId是我的Access Key Id值。 (3)signature是刚计算出来的签名。 (4)policy是刚计算出来的策略。 (5)file是实际上传的文件。约束条件:此参数必须为最后一个参数,否则此参数之后的参数会被丢弃;一个请求中只能含有一个file参数。 5、打开fiddler.exe软件。准备监听http报文。 6、postman点击send,返回状态Status 204 No Content。 查看code snippet,可以查看http的协议报文(这个报文只是一个示例,并不能只能使用。真实报文通过fiddler可以看到)。 7、返回华为云OBS控制台。可以看到1.png已经上传。点击下载。 8、完成图片上传。 注意:OBS并不强制本地文件名和OBS桶的期待文件名,保持一致。你可以本地a.png,上传为b.png。 9、此时fiddler已经抓到postman的报文。左侧Host选择bucket-guxiaobei.obs.cn-north-4.myhuaweicloud.com 10、在fiddler的十六进制视图中,全选后,复制为0x##(原因是png和jpg等图片文件,直接复制乱码发送,会出现报错)。
直接复制Ctrl+C乱码,出现报错情况: HTTP/1.1 503 Service Unavailable Server: OBS Connection: close x-reserved-indicator: 1 x-obs-request-id: 0000017BDE1D603D62CBC4CFA793A350 x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSsxayRC0RHQoYie0g5t74Yw6I4UVIcX Content-Type: application/xml Date: Mon, 13 Sep 2021 07:44:32 GMT Content-Length: 0 <?xml version="1.0" encoding="UTF-8" standalone="yes"?><Error><Code>ServiceUnavailable</Code><Message>Please reduce your request rate.</Message><RequestId>0000017BDE1D603D62CBC4CFA793A350</RequestId><HostId>UCYZxtA0l02Suyb4jex5NCahVniI4LPr0GdRkHLTGK1jRLt3ogG4wmjl8iKZjHuO</HostId></Error> | 复制为0x##,内容如下:(已经删掉) byte[] arrOutput = { 0x50, 0D, 0x0A }; |
11、整理为纯16进制内容,如下: (已经删掉) 12、打开sscom软件。 (1)远程地址,填上bucket-guxiaobei.obs.cn-north-4.myhuaweicloud.com (2)选择HEX发送。 (2)发送框填写fiddler真实http报文的16进制内容。 13、华为云obs先删除已经上传的文件。 14、sscom先点连接。然后点发送。华为云obs返回204 No Content。 15、查看华为云obs,发现sscom也成功上传了1.png文件。 |