Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将图像上传到AWS S3并获取图像文件';s S3 bucket url并一次性保存到dynamodb-Android_Android_Url_Amazon Web Services_Amazon S3_Amazon Dynamodb - Fatal编程技术网

如何将图像上传到AWS S3并获取图像文件';s S3 bucket url并一次性保存到dynamodb-Android

如何将图像上传到AWS S3并获取图像文件';s S3 bucket url并一次性保存到dynamodb-Android,android,url,amazon-web-services,amazon-s3,amazon-dynamodb,Android,Url,Amazon Web Services,Amazon S3,Amazon Dynamodb,如何将图像保存到AWS S3 bucket,然后检索图像公共url,并将url与其他用户输入数据一起保存到dynamodb中,而不让用户留下活动或片段? 所有这些能否同时实现? 任何示例代码示例都会有很大帮助。谢谢 S3中的每个对象都可以具有私有或公共访问权限 如果它是公共的,那么公共URL总是http(s)://s3(-region).amazonaws.com/BUCKET/KEY,这就是第一阶段 如果同步上传,最后可以将该链接的元数据保存到DynamoDB,并确保已修复。请尝试以下代码-

如何将图像保存到AWS S3 bucket,然后检索图像公共url,并将url与其他用户输入数据一起保存到dynamodb中,而不让用户留下活动或片段? 所有这些能否同时实现?
任何示例代码示例都会有很大帮助。谢谢

S3中的每个对象都可以具有私有或公共访问权限

如果它是公共的,那么公共URL总是
http(s)://s3(-region).amazonaws.com/BUCKET/KEY
,这就是第一阶段

如果同步上传,最后可以将该链接的元数据保存到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);


    }
private void uploadImageToAWS(){
AsyncTask _Task=新建AsyncTask(){
@凌驾
受保护的void onPreExecute(){
}
@凌驾
受保护的字符串doInBackground(字符串…arg0)
{
if(networkavailability.checkNetworkStatus(PrintRollScreenActivity.this))
{
试一试{
java.util.Date expiration=new java.util.Date();
long msec=expiration.getTime();
毫秒+=1000*60*60;//1小时。
有效期。设置时间(毫秒);
出版进度(arg0);
字符串existingBucketName=“您的\u AWS\u BUCKET\u NAME”////////////
String keyName=“image\u name”;
字符串filePath=“”;
AmazonS3Client s3Client1=新的AmazonS3Client(新的基本WSCredentials(“AWS_密钥”、“AWS_机密”);
PutObjectRequest por=新的PutObjectRequest(existingBucketName,
keyName+“.png”,新文件(filePath));//键是URL
//公开对象
por.setCannedAcl(CanneDaccessController.PublicRead);
s3Client1.putObject(por);
字符串_finalUrl=“https://“+existingBucketName+”.s3.amazonaws.com/“+keyName+”.png”;
}捕获(例外e){
//将错误写入日志
e、 printStackTrace();
}
} 
其他的
{
}
返回null;
}
@凌驾
受保护的void onProgressUpdate(字符串…值){
//TODO自动生成的方法存根
super.onProgressUpdate(值);
System.out.println(“进度:+值”);
}
@凌驾
受保护的void onPostExecute(字符串结果)
{
}
};
_Task.execute((字符串[])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中的文件夹公开,并将文件链接保存在dynamoDB中,如下所示: “”


-

S3URL可以基于区域、存储桶和路径构建。它总是相同的结构。非常感谢您的回复:DHey@Sbruce您能在这里发布从lambda函数或android上传图像并将url保存到dynamodb的完整示例吗?我已经在下面解释了如何将图像保存到S3。我还不知道如何使用lambda函数。为了将url保存到DynamoDB,我使用了DynamoDB映射器类。非常感谢您的有用回复:数据此url不可公开访问。