ios - 如何在 iOS SWIFT 中显示来自 AWSS3 存储桶的完整图像?
问题描述
我正在使用以下代码从 AWS S3 存储桶下载图像列表并显示在 tableView 中。我尝试了很多解决方案,但没有用。
func listS3Objects() {
let credentialsProvider = AWSCognitoCredentialsProvider(regionType:.USEast2, identityPoolId:identityID)
let configuration = AWSServiceConfiguration(region:.USEast2, credentialsProvider:credentialsProvider)
AWSServiceManager.default().defaultServiceConfiguration = configuration
AWSS3.register(with: configuration!, forKey: "defaultKey")
let s3 = AWSS3.s3(forKey: "defaultKey")
let listRequest: AWSS3ListObjectsRequest = AWSS3ListObjectsRequest()
listRequest.bucket = bucketName
s3.listObjects(listRequest).continueWith { (task) -> AnyObject? in
print("Object result = \(task.result)")
print("Object contents = \(task.result?.contents)")
for object in (task.result?.contents)! {
print("Object key = \(object.key!)")
self.imagesArray.append(object)
}
DispatchQueue.main.async {
self.ImageList_Table.reloadData()
}
return nil
}
}
解决方案
关于文档,亚马逊建议在开发应用程序时使用较新的版本 ListObjectsV2 。
示例请求可能如下所示
let listObjectsRequest = AWSS3ListObjectsV2Request()
listObjectsRequest?.bucket = "your bucket"
//listObjectsRequest?.prefix = prefix. //If you want to have a prefix
//listObjectsRequest?.delimiter = delimiter //If you want to have a delimiter
AWSS3.default().listObjectsV2(listObjectsRequest!) { (output, error) in
if let error = error{
print(error)
}
if let output = output{
print(output)
}
注意:要在 AWS Identity and Access Management (IAM) 策略中使用此操作,您必须有权执行 s3:ListBucket 操作
推荐阅读
- python - 如何从 django python 的 queryset 对象中的 datetimefield 获取月份和年份(2020 年 1 月)?
- python - 在熊猫时间序列图上格式化日期会弄乱日期
- python-3.x - Python RuntimeError:输入序列
- google-cloud-platform - GCP 计算上的关闭服务
- arrays - 在bash中搜索数组中一个键的关联数组值
- algorithm - neo4J 错误:Neo.ClientError.Procedure.ProcedureCallFailed
- javascript - 导航栏不会显示 z-index 问题(?)
- html - 为什么这个 YouTube 视频没有正确嵌入?
- java - 更新失败时从 REST API 返回的内容
- session - Outlook WebAddin(owa) 会话为空问题