如何将文件上载到AmazonS3并使用iOS获取响应的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

我使用了来自Amazon示例代码的代码片段。下面的代码将数据上传到AmazonS3 bucket中,但我需要上传文件的URL。我走的方向对吗?或者有人能指出我犯的错误吗

任何形式的帮助都将不胜感激

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,我就越觉得这是一个残酷的笑话,是在开我们开发人员的玩笑。