2017-09-21 12 views
2

Le compartiment créé sur AWS est privé. Je ne suis pas en mesure d'accéder au fichier lors du téléchargement en mode privé. Téléchargement avec succès lors du téléchargement de support en utilisant la méthode ci-dessous.Android: le média n'accède pas après le téléchargement dans un compartiment privé à l'aide d'AWS

Nom Bucket avec l'URL obtenir de util classe

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

fichier pour le téléchargement sur 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())); 
       } 
      } 
     }); 

Mode d'accès est privé lors du téléchargement fichier multimédia

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

Quelle est l'erreur que vous voyez? –

Répondre

1

Tout ce que vous faites c'est bien. Le téléchargement fonctionnera bien.
La seule chose dont vous avez besoin est de générer une URL signée.
Utilisez AWS SDK GeneratePresignedUrlRequest pour cela. Cette classe a de nombreuses méthodes, vous pouvez également définir la date d'expiration pour le lien et d'autres choses.

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); 

Vous pouvez trouver la clé de fichier et le nom clé comme suit:
https://s3-[region]..amazonaws.com/[bucket name]/[file key]