2017-09-21 11 views
2

AWS에서 생성 된 버킷은 비공개입니다. 개인 액세스 모드로 업로드 할 때 파일에 액세스 할 수 없습니다. 아래 방법을 사용하여 미디어를 업로드 할 때 업로드가 완료되었습니다. 당신이하고있는 미디어 파일을Android : AWS를 사용하여 개인용 양동이에 업로드 한 후 미디어에 액세스하지 않습니다.

 try { 
      por.setCannedAcl(CannedAccessControlList.Private); 
      s3Client.putObject(por); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
+0

오류가 무엇을보고있는 것입니까? –

답변

1

모든 업로드하면 URL이 AWS에

File mFile = new File(mUri.toString().trim()); 

     AmazonS3Client s3Client = new AmazonS3Client( Ut.getCredentialsCognito(context)); 
     PutObjectRequest por = new PutObjectRequest(bucketName, fileNameIncludingSubFolders, mFile); 
     por.setProgressListener(new ProgressListener() { 

      @Override 
      public void progressChanged(ProgressEvent prgEvent) { 
       if (progressUpdate != null) { 
        progressUpdate.progressStatus(String.valueOf(prgEvent.getBytesTransferred())); 
       } 
      } 
     }); 

액세스 모드를 업로드 파일 클래스 폴더의 유틸리티에서

String bucketName = Util.getBucketNameFromUrl(uploadPath); 
    String fileNameIncludingSubFolders = localPath.substring(localPath.lastIndexOf("/")+1); 
    Uri mUri = Uri.parse(localPath); 

점점

버킷 이름은 개인이다 괜찮습니다. 업로드가 잘 작동합니다.
필요한 것은 서명 된 URL을 생성하는 것입니다.
AWS SDK GeneratePresignedUrlRequest을 사용하십시오. 이 클래스에는 여러 가지 방법이 있으며 링크 및 기타 항목의 만료 날짜를 설정할 수도 있습니다.

AWSCredentials awsCredentials = new BasicAWSCredentials("ACCESS_KEY_ID", "SECRET_KEY_ID"); 
AmazonS3 s3client = new AmazonS3Client(awsCredentials); 
GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, fileKey); 
URL objectURL = s3client.generatePresignedUrl(request); 
당신은 다음과 같은 파일 키와 키 이름을 찾을 수 있습니다

:
https://s3-[region]..amazonaws.com/[bucket name]/[file key]