如何将文件上载到AmazonS3并使用iOS获取响应的url
我使用了来自Amazon示例代码的代码片段。下面的代码将数据上传到AmazonS3 bucket中,但我需要上传文件的URL。我走的方向对吗?或者有人能指出我犯的错误吗 任何形式的帮助都将不胜感激如何将文件上载到AmazonS3并使用iOS获取响应的url,ios,objective-c,amazon-web-services,amazon-s3,Ios,Objective C,Amazon Web Services,Amazon S3,我使用了来自Amazon示例代码的代码片段。下面的代码将数据上传到AmazonS3 bucket中,但我需要上传文件的URL。我走的方向对吗?或者有人能指出我犯的错误吗 任何形式的帮助都将不胜感激 AWSS3TransferManager *transferManager = [AWSS3TransferManager defaultS3TransferManager]; AWSS3TransferManagerUploadRequest *uploadRequest = [AWSS3T
AWSS3TransferManager *transferManager = [AWSS3TransferManager defaultS3TransferManager];
AWSS3TransferManagerUploadRequest *uploadRequest = [AWSS3TransferManagerUploadRequest new];
uploadRequest.bucket = S3BucketName;
uploadRequest.key = S3UploadKeyName;
uploadRequest.body = self.uploadFileURL;
//uploadRequest.contentLength = [NSNumber numberWithUnsignedLongLong:fileSize];
[[transferManager upload:uploadRequest] continueWithBlock:^id(BFTask *task) {
// Do something with the response
AWSS3TransferManagerUploadOutput *uploadOutPut = task.result;
NSLog(@"bftask:%@",uploadOutPut); // Upload out put gives me the following response
return nil;
}];
任务响应:
bftask:<AWSS3TransferManagerUploadOutput: 0x1706606c0> {
ETag = "\"0aefedfa36b687a74025b1ad50f3101f\"";
serverSideEncryption = 0;
}
bftask:{
ETag=“\”0aefedfa36b687a74025b1ad50f3101f\”;
serverSideEncryption=0;
}
如果您只需要下载文件,可以使用AWSS3TransferManagerDownloadRequest
使用SDK下载文件。或者,您可以使用AWSS3PreSignedURLBuilder生成预签名URL以下载文件
如果您只想知道对象的URL,URL将遵循以下模式:
https://<YourS3Endpoint>/<YourBucketName>/<YourObjectKeyName>
https:////
默认情况下,AmazonS3中的任何对象都是私有的,不可公开读取。如果要使其公开可读,需要在AWSS3TransferManagerUploadRequest
对象上设置ACL
有关更多详细信息,请参阅。令人印象深刻的是,AWS SDK有多么糟糕,它们的文档有多么糟糕。结果对象没有任何用处,它甚至没有返回最终的URL。也许亚马逊像他们的拾荒者一样驱动着他们的开发人员,他们忙于思考自杀而无法创建有用的框架。@LastNightTrain-同意,这真的让我生气。此外,所有文档都已过期数月,且所有示例都不再相关。他们也不反对任何东西,他们只是删除了整个类,当他们运行pod更新时,这些类会破坏每个人的代码。我越是尝试使用AWS Mobile SDK,我就越觉得这是一个残酷的笑话,是在开我们开发人员的玩笑。