簡體   English   中英

如何將圖像上傳到AWS S3並獲取圖像文件的S3存儲桶URL並一次保存到dynamodb - Android

[英]How to upload image to AWS S3 and get the image file's S3 bucket url and save to dynamodb all at once - Android

如何將圖像保存到AWS S3存儲桶,然后檢索圖像公共網址並將網址與其他用戶輸入數據一起保存到dynamodb中,而無需用戶離開活動或片段? 所有這些都可以立刻實現嗎? 任何示例代碼示例都會有很大幫助。 謝謝!!

試試這個代碼 -

private void uploadImageToAWS() {

        AsyncTask<String, String, String> _Task = new AsyncTask<String, String, String>() {

            @Override
            protected void onPreExecute() {


            }



            @Override
            protected String doInBackground(String... arg0) 
            {

                if (NetworkAvailablity.checkNetworkStatus(PrintRollScreenActivity.this)) 
                {
                    try {
                        java.util.Date expiration = new java.util.Date();
                        long msec = expiration.getTime();
                        msec += 1000 * 60 * 60; // 1 hour.
                        expiration.setTime(msec);
                        publishProgress(arg0);

                        String existingBucketName = "YOUR_AWS_BUCKET_NAME";////////////
                        String keyName = "image_name";
                        String filePath = "";

                        AmazonS3Client s3Client1 = new AmazonS3Client( new BasicAWSCredentials( "AWS_KEY","AWS_SECRET") );
                        PutObjectRequest por = new PutObjectRequest(existingBucketName,
                                keyName + ".png",new File(filePath));//key is  URL

                        //making the object Public
                        por.setCannedAcl(CannedAccessControlList.PublicRead);
                        s3Client1.putObject(por);


                        String _finalUrl = "https://"+existingBucketName+".s3.amazonaws.com/" + keyName + ".png";

                    } catch (Exception e) {
                        // writing error to Log
                        e.printStackTrace();


                    }




                } 
                else
                {

                }


                return null;

            }
            @Override
            protected void onProgressUpdate(String... values) {
                // TODO Auto-generated method stub
                super.onProgressUpdate(values);
                System.out.println("Progress : "  + values);
            }
            @Override
            protected void onPostExecute(String result) 
            {

            }
        };
        _Task.execute((String[]) null);


    }

這是我將圖像上傳到S3的方式:

CognitoCachingCredentialsProvider credentialsProvider = 
             new CognitoCachingCredentialsProvider(
             context.getApplicationContext(),
             YOUR_IDENTITY_POOL_ID,
             Regions.US_EAST_1);

AmazonS3Client s3Client = new AmazonS3Client(credentialsProvider);

TransferUtility transferUtility = new TransferUtility(s3Client, context.
                      getApplicationContext());

TransferObserver observer = transferUtility.upload(
       MY_BUCKET,           // The S3 bucket to upload to
       OBJECT_KEY,   // The key for the uploaded object 
       FILE_TO_UPLOAD // The location of the file to be uploaded );

在您的清單文件中有這個:

 <uses-permission android:name="android.permission.INTERNET" />  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

 <service android:name= "com.amazonaws.mobileconnectors.s3.transferutility.TransferService" android:enabled="true" />

信息來源在這里

我在S3 bucket public中創建了文件夾並保存了dynamoDB中的文件鏈接:“ https://mybucket.s3.amazonaws.com/myfolder/myimage.jpg

-

S3中的每個對象都可以具有私有或公共訪問權限。

如果它是公共的,則公共URL始終是http(s)://s3(-region).amazonaws.com/BUCKET/KEY因此第1階段。

如果您同步上傳,最后您可以將有關該鏈接的元數據保存到DynamoDB,並確保您已修復。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM