阿里云oss服务中,尚未发现有关flutter的文档,在使用过程中遇到了诸多麻烦,最终多处搜集,找到了一个合适的方法。
本文讲述的上传文件前提为,写权限是私有的,需验证身份后方可上传。
本文基于说明文档中的api中的postobject文档。
首先,根据文中要求:
Post Signature
对于验证的Post请求,HTML表单中必须包含policy和Signature信息。policy控制请求中那些值是允许的。计算Signature的具体流程为:
- 创建一个 UTF-8 编码的 policy。
- 将 policy 进行 base64 编码,其值即为 policy 表单域该填入的值,将该值作为将要签名的字符串。
- 使用 AccessKeySecret 对要签名的字符串进行签名,签名方法与Head中签名的计算方法相同(将要签名的字符串替换为 policy 即可),请参见在Header中包含签名。
下面是对应的flutter代码:
//验证文本域
static String policyText =
'{"expiration": "2020-01-01T12:00:00.000Z","conditions": [["content-length-range", 0, 1048576000]]}';
//进行utf8编码
static List<int> policyText_utf8 = utf8.encode(policyText);
//进行base64编码
static String policy_b