我正在上传一个文件到我的S3存储桶,我希望它具有公共读取权限。这似乎应该很简单,但就像我生活中的许多事情一样,它并不简单。寻找答案,我找到的最接近的提示是:在PUT请求中添加header:x-amz-acl:公共读取这看起来很简单,但我使用的是AWSS 3 TransferUtilityUploadExpression,而不是PUT,并且试图在AWSS 3 TransferUtilityUploadExpression上设置requestHeader失败- setValue:forRequestHeader:无法识别,所以我使用requestParamaters代替,但这也不起作用。我已经搜索和阅读,直到我的眼睛模糊。有人可以帮助吗?我的代码到目前为止: AWSS3TransferUtilityUploadExpression *expression = [AWSS3TransferUtilityUploadExpression new];
// expression.uploadProgress = self.uploadProgress;
[expression.requestParameters setValue:@"public-read" forKey:@"x-amz-acl"];
AWSTask *atask;
AWSS3TransferUtility *transferUtility = [AWSS3TransferUtility defaultS3TransferUtility];
NSLog(@"started file trans: %@", self.fileToSend.fileURL);
[atask = [transferUtility uploadFile:self.fileToSend.fileURL
bucket:S3BucketName
key:self.fileToSend.fileName
contentType:self.fileToSend.mimeType
expression:expression
completionHander:self.completionHandler]
continueWithBlock:^id(AWSTask *task) {编辑:一些进展。我发现我使用的是过时版本的SDK和最新版本的文档。另一个愚蠢的错误。无论如何,更新SDK并重新编译后,它运行,但创建和异常'NSUnknownKeyException',原因:'[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key x-amz-acl.'编辑:好的。修正了。通过组合提示,后退一步,我将请求标题行更改为: [expression setValue:@"public-read" forRequestHeader:@"x-amz-acl"];感谢响应者。
|