2017-09-06 6 views
2

J'ai utilisé le téléchargement de plusieurs parties pour télécharger l'image sur Amazon S3 comme mentionné dans documentation.Chargement multipart AmazonS3

Mais alors les fichiers téléchargés peuvent être accédés directement sans clé d'accès ou quoi que ce soit. Testé en utilisant l'URL distante qui provient de la réponse pour un fichier particulier. Existe-t-il un moyen de restreindre l'accès au fichier téléchargé? Il existe également un moyen de modifier l'URL de téléchargement ici, si je veux ajouter un dossier et le fichier?

+0

Vous devez définir l'accès pour le dossier dans le compartiment Amazon s3, donc peut être restreint –

+0

@RajuSharma, cette instruction est incorrecte. ** Les seaux et objets S3 sont sécurisés et inaccessibles par défaut **. Si un objet peut être téléchargé de façon inattendue de manière anonyme, une erreur a été commise par l'utilisateur, soit lors du téléchargement, soit dans la stratégie de compartiment ou dans les listes de contrôle d'accès. Votre commentaire implique que les "dossiers" sont en quelque sorte nécessaires pour la sécurité. –

Répondre

1

Oui, vous pouvez créer un dossier en utilisant la méthode ci-dessous.

 AmazonS3 amazons3Client = new AmazonS3Client(new ProfileCredentialsProvider()); 
    public void createFolder(String bucketName, String folderName) 
     { 
      try 
      { 

         ObjectMetadata objectMetaData = new ObjectMetadata(); 
         objectMetaData.setContentLength(0); 
         InputStream emptyContent = new ByteArrayInputStream(new byte[0]); 
         amazons3Client.putObject(new PutObjectRequest(bucketName, folderName + "/", emptyContent, objectMetaData)); 
      } 
      catch (Exception exception) 
      { 
       LOGGER.error("Exception In Create Folder", exception); 
      } 

     } 

Les droits d'accès, vous pouvez utiliser la politique et appliquerez sur spécifiques à votre seau, S'il vous plaît passer par le lien ci-dessous Vous pouvez autoriser l'accès IP spécifique.

+0

a reçu une exception com.amazonaws.AmazonClientException: Impossible d'exécuter la requête HTTP: la lecture a expiré. –

+0

au lieu d'AmazonS3 amazons3Client = new AmazonS3Client (new ProfileCredentialsProvider()); utilisez votre objet client AmazonS3. – KPP

+0

je l'ai fait. J'utilise le téléchargement multipart. De même, la requête keyName changera en nom de fichier + "/" + clé; ? http://docs.aws.amazon.com/AmazonS3/latest/dev/llJavaUploadFile.html –