![](/img/trans.png)
[英]how to upload an image to aws s3 bucket and get the saved url in Android studio using java
[英]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.