【问题标题】:Howto delete a file/object stored in an AWS S3 bucket, using the Android SDK?如何使用 Android SDK 删除存储在 AWS S3 存储桶中的文件/对象?
【发布时间】:2020-05-12 04:11:28
【问题描述】:

我在官方网站上搜索了latest AWS docs for the Android SDK,。不幸的是,我找不到与此相关的任何内容。如何使用 Android SDK 删除特定或多个文件或对象?

【问题讨论】:

    标签: android amazon-web-services amazon-s3 aws-amplify aws-amplify-sdk-android


    【解决方案1】:

    截至 2020 年中,首选方法是使用适用于 Android 的 AWS Amplify 库。

    the documentation for remove(), in the Storage category。它建议这样做(在 Java 中):

    Amplify.Storage.remove(
        "myUploadedFileName.txt",
        result -> Log.i("MyAmplifyApp", "Successfully removed: " + result.getKey()),
        error -> Log.e("MyAmplifyApp", "Remove failure", error)
    );
    

    OR(在 Kotlin 中):

    Amplify.Storage.remove(
        "myUploadedFileName.txt",
        { result -> Log.i("MyAmplifyApp", "Successfully removed: " + result.getKey()) },
        { error -> Log.e("MyAmplifyApp", "Remove failure", error) }
    )
    

    【讨论】:

      【解决方案2】:

      我找到了一个可行的解决方案,如果有人来看它可能会有所帮助,但在适用于 Android SDK 的 AWS 文档中没有找到此解决方案,并且 Amplify 框架处于预览阶段,可能几个月后很快就会出现。到那时解决办法是:

      new Thread(new Runnable() {
        @Override
        public void run() {
          s3Client.deleteObject(bucketName, filePath);
        }
      }).start();
      并且总是创建一个新线程,否则它会抛出错误。 谢谢

      【讨论】:

        【解决方案3】:

        您可以在放大官方文档中找到Amplify.Storage.remove 方法。 这是link

        private void removeFile() {
            Amplify.Storage.remove(
                "myUploadedFileName.txt",
                new ResultListener<StorageRemoveResult>() {
                    @Override
                    public void onResult(StorageRemoveResult storageRemoveResult) {
                        Log.i("StorageQuickStart", "Successfully removed: " + storageRemoveResult.getKey());
                    }
        
                    @Override
                    public void onError(Throwable error) {
                        Log.e("StorageQuickStart", error.getMessage());
                    }
                }
            );
        }
        

        【讨论】:

        • 谢谢您,先生,但实际上我正在寻找使用 Aws 的 Android Sdk 而不是 Amplify Framework 的解决方案,据说该解决方案处于开发阶段,不适合生产使用。
        • 但是在您的问题中,您被问到有关放大的问题。
        • 仅供参考:AWS iOS 和 Android SDK 现在是 Amplify Framework 的一部分。您可以按照上述文档进行操作。
        • 但是先生在 Amplify 框架页面的开头,它所写的仍然处于预览阶段,现在不用于开发目的。
        • ^ 注意:截至 2020 年年中,Amplify 不再处于预览状态。
        猜你喜欢
        • 2017-03-06
        • 2012-02-14
        • 1970-01-01
        • 2016-05-10
        • 2017-03-20
        • 2017-08-24
        • 1970-01-01
        • 2020-06-14
        • 1970-01-01
        相关资源
        最近更新 更多