【问题标题】:Deleting file from S3 bucket in iOS app (Swift)从 iOS 应用程序 (Swift) 中的 S3 存储桶中删除文件
【发布时间】:2016-07-04 17:58:11
【问题描述】:

我正在用 Swift 编写一个 iOS 应用程序,并且正在使用 Amazon S3 来存储文件。我想知道是否有人知道我如何通过命令以编程方式删除我的 S3 存储桶中的文件(而不是在存储桶生命周期中设置删除策略)。

提前致谢

【问题讨论】:

标签: ios xcode swift amazon-web-services amazon-s3


【解决方案1】:

您从 S3 存储桶中删除文件的代码应如下所示:

    let s3 = AWSS3.defaultS3()
    let deleteObjectRequest = AWSS3DeleteObjectRequest()
    deleteObjectRequest.bucket = "yourBucketName"
    deleteObjectRequest.key = "yourFileName"
    s3.deleteObject(deleteObjectRequest).continueWithBlock { (task:AWSTask) -> AnyObject? in
        if let error = task.error {
            print("Error occurred: \(error)")
            return nil
        }
        print("Deleted successfully.")
        return nil
    }

谢谢, 罗汉

【讨论】:

  • 嗨,Rohan,请建议我如何使用这种方法或类似上面的方法使用 TransferUtility 从存储桶中删除对象。通过使用您在调用 S3.deleteObject 函数时建议的步骤,我得到异常,即“服务配置为nil。您需要在使用此方法之前配置awsconfiguration.jsonInfo.plist 或设置defaultServiceConfiguration。 " .我已经在我的项目目录中包含了 `awsconfiguration.json 文件。请尽快帮助我。我被卡住了。
  • 为了解决这个问题,您可以从 awsconfiguration.json 中复制 S3TransferUtility 部分并使用“S3”键粘贴它,以便也可以加载 S3 配置。
  • 恶意用户是否可以删除所有对象购买放置星号点星号或类似的路径?要执行上述操作,您必须在您的 s3 访问的安全设置中允许 deleteObject
  • 删除对象必须在单个文件上调用。因此,如果用户没有 listObjects 权限,他们将无法获取所有文件,也无法删除所有文件
  • 您好,此方法使我成功,但文件未从存储桶中删除。可能是什么原因?
【解决方案2】:

Swift 4+

如果你还没有初始

let credentialsProvider = AWSCognitoCredentialsProvider(regionType:.APSoutheast1, identityPoolId: "yourPoolID")

let configuration = AWSServiceConfiguration(region:.APSoutheast1, credentialsProvider:credentialsProvider)

AWSServiceManager.default().defaultServiceConfiguration = configuration

let s3 = AWSS3.default()
guard let deleteObjectRequest = AWSS3DeleteObjectRequest() else {
    return
}
deleteObjectRequest.bucket = "yourBucketName"
deleteObjectRequest.key = "yourFileName"
s3.deleteObject(deleteObjectRequest).continueWith { (task:AWSTask) -> AnyObject? in
    
    if let error = task.error {
        print("Error occurred: \(error)")
        return nil
    }
    print("Deleted successfully.")
    return nil
    
}

【讨论】:

  • 我没有使用身份池。我已经使用传输实用程序上传了文件。如何删除?
猜你喜欢
  • 2018-05-16
  • 1970-01-01
  • 2015-06-23
  • 1970-01-01
  • 1970-01-01
  • 2012-04-20
  • 1970-01-01
  • 2017-02-01
  • 2011-03-09
相关资源
最近更新 更多