将图像从Android上传到Amazon S3?

Oll*_*e C 14 android amazon-s3 amazon-web-services

我需要将位图上传到Amazon S3.我从未使用过S3,而且文档证明不太有用,因为我看不到任何内容来涵盖这个特定的要求.不幸的是,我很难花时间在这个项目上花一整天时间学习如何将它们挂在一起,所以希望你们中的一个人能给我一些指示.

您能否指出我的参考资料来解释如何将文件推送到S3,并获得URL参考作为回报?

更具体地说: - 使用S3 Android SDK时凭据在哪里? - 我是否需要在上传文件之前创建一个存储桶,还是存在于存储桶之外? - 我使用哪种SDK方法将位图推送到S3? - 我是否正确地认为我需要CORE和S3库来做我需要的,而没有其他人?

And*_*H M 11

String      ACCESS_KEY="****************",
            SECRET_KEY="****************",
            MY_BUCKET="bucket_name",
            OBJECT_KEY="unique_id";              
  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/");
                List<Bucket> buckets=s3.listBuckets();
                for(Bucket bucket:buckets){
                    Log.e("Bucket ","Name "+bucket.getName()+" Owner "+bucket.getOwner()+ " Date " + bucket.getCreationDate());
                }
                Log.e("Size ", "" + s3.listBuckets().size());
                TransferUtility transferUtility = new TransferUtility(s3, getApplicationContext());
                UPLOADING_IMAGE=new File(Environment.getExternalStorageDirectory().getPath()+"/Screenshot.png");
                TransferObserver observer = transferUtility.upload(MY_BUCKET,OBJECT_KEY,UPLOADING_IMAGE);
                observer.setTransferListener(new TransferListener() {
                    @Override
                    public void onStateChanged(int id, TransferState state) {
                        // do something
                        progress.hide();
                        path.setText("ID "+id+"\nState "+state.name()+"\nImage ID "+OBJECT_KEY);

                    }

                    @Override
                    public void onProgressChanged(int id, long bytesCurrent, long bytesTotal) {
                        int percentage = (int) (bytesCurrent / bytesTotal * 100);
                        progress.setProgress(percentage);
                        //Display percentage transfered to user
                    }

                    @Override
                    public void onError(int id, Exception ex) {
                        // do something
                        Log.e("Error  ",""+ex );
                    }

                });
Run Code Online (Sandbox Code Playgroud)


Dav*_*unt 8

查看Amazon S3 API文档,了解使用Amazon S3可以做什么和不可以做什么.请注意,有两个API,一个更简单的REST API和一个更复杂的SOAP API.

您可以编写自己的代码以使HTTP请求与REST API交互,或使用SOAP库来使用SOAP API.所有Amazon服务都具有这些标准API端点(REST,SOAP),理论上您可以使用任何编程语言编写客户端!

幸运的是,对于Android开发者来说,亚马逊已经发布了一个(Beta)SDK,可以为您完成所有这些工作.还有一个入门指南和Javadocs.使用此SDK,您应该能够在几小时内将S3与您的应用程序集成.

入门指南附带完整示例,并说明如何提供所需的凭据.

从概念上讲,Amazon S3将数据存储在存储桶中,其中存储桶包含对象.通常,每个应用程序将使用一个存储桶,并根据需要添加任意数量的对象.S3不支持或具有任何文件夹概念,但您可以在对象名称中添加斜杠(/).

  • 谢谢大卫.我已经花了一些时间来使用入门指南和文档和示例,但到目前为止,看到合适的示例代码是一个缓慢的过程.亚马逊似乎已经为那些将要学习所有东西并花费大量时间的人编写了文档 - 我没有那么奢侈,我只是想把文件推进去做其他的东西.看起来我需要投入更多的时间,这是一种耻辱. (2认同)