Android Amazon s3 存储桶

Posted

技术标签:

【中文标题】Android Amazon s3 存储桶【英文标题】:Android Amazon s3 bucket 【发布时间】:2016-08-25 09:26:46 【问题描述】:

如何从特定文件夹中的 Amazon Web Services S3 存储桶下载文件。

截至目前,我在我的 android studio 中导入 amazon transfer Utility 项目示例,它工作正常没问题,但每当我从 AWS-S3 存储桶下载文件时,文件下载到默认外部存储位置。 因此,我希望将文件下载到特定文件夹中,例如 storage/folder_name/file_name.txt

【问题讨论】:

【参考方案1】:

您可以使用AWS SDK 将文件下载到您想要的任何位置。 或者使用 CLI 工具,例如 AWS CLI 或 s3cmd

【讨论】:

【参考方案2】:

试试这个..我在我的项目中使用它能够将图像下载到特定文件夹..

 File imageImage = new File(mContext.getDir(USER_PROFILE_DIRECTORY, Context.MODE_PRIVATE)+ ImageName).getAbsoluteFile();
 Download(checkImage,Constants.AMAZON_BUCKET_IMAGE,ImageName);

/**
 * To download the image from the Amazon S3 bucket and store the image locally to the particular directory
 * @param DownloadingImagePath Source path of the image file to be stored
 * @param ImageName Image file name / Object key of Amazon S3
 * @param ImageBucket Amazon S3 bucket name
*/
public void Download(File DownloadingImagePath,String ImageBucket,String ImageName)
try
      AWSCredentials credentials = new BasicAWSCredentials(ACCESS_KEY, SECRET_KEY);
      AmazonS3 s3 = new AmazonS3Client(credentials);
                java.security.Security.setProperty("networkaddress.cache.ttl" , "60");
                s3.setRegion(Region.getRegion(Regions.AP_SOUTHEAST_1));
                s3.setEndpoint("https://s3-ap-southeast-1.amazonaws.com/");
                TransferUtility transferUtility = new TransferUtility(s3, mContext);
                TransferObserver observer = transferUtility.download(ImageBucket, ImageName, DownloadingImagePath);
                observer.setTransferListener(new TransferListener() 
                    @Override
                    public void onStateChanged(int id, TransferState state) 
                        //Log.e("Amazon Stats",state.name());
                    

                    @Override
                    public void onProgressChanged(int id, long bytesCurrent, long bytesTotal) 

                    

                    @Override
                    public void onError(int id, Exception ex) 

                    
                );
                 catch (Exception ignored)
            
        

【讨论】:

不客气。如果此答案对您有帮助,请接受。它可能有助于其他人解决如何寻找相同的东西..享受编码............ 你好安丹,..我可以按照你的建议去做..还有一个问题...我在 S3 存储桶中有这么多文件,但我只下载了那些我单击...所以,我想从本地/外部存储中的 S3 存储桶中下载所有文件.....任何进一步的建议...... 我的图片是保存在bucket里面的一个文件夹里的,是不是一定要提到这个文件夹作为bucket的名字还是key里面提到呢?

以上是关于Android Amazon s3 存储桶的主要内容,如果未能解决你的问题,请参考以下文章

访问 Amazon S3 公共存储桶

向 Amazon S3 存储桶授予权限

访问我在 Amazon 中的 S3 存储桶

Amazon S3 存储桶策略引用

删除 Amazon S3 存储桶? [关闭]

如何为 Amazon S3 存储桶配置 SSL