putBucketACL method
Future<Response>
putBucketACL({
- String? bucketName,
- String? region,
- COSACLHeader? aclHeader,
- COSAccessControlPolicy? accessControlPolicy,
PUT Bucket acl 接口用来写入存储桶的访问控制列表(ACL),
您可以通过请求头 x-cos-acl 和 x-cos-grant-* 传入 ACL 信息,或者通过请求体以 XML 格式传入 ACL 信息。
bucketName
region
aclHeader
accessControlPolicy
Implementation
Future<Response> putBucketACL({
String? bucketName,
String? region,
COSACLHeader? aclHeader,
COSAccessControlPolicy? accessControlPolicy,
}) async {
Map<String, String>? headers;
if (aclHeader != null) {
headers ??= aclHeader.toMap();
}
String? xmlString;
if (accessControlPolicy != null) {
headers ??= <String, String>{};
xmlString = accessControlPolicy.toXmlString();
// http 框架设置body时,会自动给 Content-Type 指定字符集为 charset=utf-8
// 设置 application/xml; charset=utf-8 保持一致
headers['Content-Type'] = 'application/xml; charset=utf-8';
headers['Content-Length'] = xmlString.length.toString();
final String md5String = Base64Encoder()
.convert(md5.convert(xmlString.codeUnits).bytes)
.toString();
headers['Content-MD5'] = md5String;
}
final Response response = await client.put(
'${getBaseApiUrl(bucketName, region)}/?acl',
headers: headers,
body: xmlString,
);
return toValidation(response);
}