文件流上传方法
接口地址: 获取文件直传地址接口获取到的uploadUrl
接口描述:
- 使用获取文件直传地址接口获取到的uploadUrl进行文件流上传
- 上传使用HTTP PUT方式上传
- 上传时需要在HTTP Header中增加字段Content-MD5和Content-Type,字段值与获取文件直传地址接口中contentMd5和contentType值保持一致,否则会出现错误码为403的错误。
请求参数:
1.Content-MD5:base64编码的文件MD5 2.Content-Type:文件MIME类型 3.HTTP BODY:待上传文件的二进制字节流
请求示例:
PUT /ObjectName HTTP/1.1
Content-Length:ContentLength
Content-Type:ContentType
Content-MD5:eB5eJF1ptWaXm4bijSPyxw==
响应示例
HTTP/1.1 200 OK
Server: AliyunOSS
Date: Tue, 04 Dec 2018 15:56:38 GMT
Content-Length: 0
Connection: keep-alive
x-oss-request-id: 5C06A3B67B8B5A3DA422299D
ETag: "D41D8CD98F00B204E9800998ECF8427E"
x-oss-hash-crc64ecma: 0
Content-MD5: 1B2M2Y8AsgTpgAmY7PhCfg==
x-oss-server-time: 7
如何计算Content-MD5?
首先计算MD5加密的二进制数组(128位),然后再对这个二进制数组进行base64编码(而不是对32位字符串编码)。例如,用Python计算0123456789的Content-MD5,代码为:
>>> import base64,hashlib
>>> hash = hashlib.md5()
>>> hash.update("0123456789")
>>> base64.b64encode(hash.digest())
'eB5eJF1ptWaXm4bijSPyxw=='