2017-09-06 1 views
2

Ich habe das Hochladen mehrerer Bilder für das Hochladen von Bildern auf Amazon S3 wie unter documentation beschrieben verwendet.AmazonS3 mehrteiliges Hochladen

Aber dann können die hochgeladenen Dateien direkt ohne Zugriffsschlüssel oder etwas zugreifen. Getestet unter Verwendung der entfernten URL, die von der Antwort für eine bestimmte Datei erhalten wird. Gibt es eine Möglichkeit, den Zugriff auf die hochgeladene Datei einzuschränken? Gibt es auch eine Möglichkeit, die Upload-URL hier zu ändern, wenn ich einen Ordner und die Datei hinzufügen möchte?

+0

Sie müssen den Zugriff für Ordner in Amazon S3 Eimer definieren, so kann eingeschränkt werden –

+0

@ RajuSharma, diese Aussage ist nicht korrekt. ** S3-Buckets und -Objekte sind standardmäßig sicher und nicht zugreifbar **. Wenn ein Objekt unerwartet anonym heruntergeladen werden kann, wurde ein Fehler vom Benutzer entweder während des Uploads oder in der Bucket-Richtlinie oder den ACLs gemacht. Ihr Kommentar deutet an, dass "Ordner" irgendwie zur Sicherheit benötigt werden. –

Antwort

1

Ja, Sie Ordner mithilfe folgenden Verfahren erstellen können.

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

     } 

Zugriffsrechte Sie Politik und es gilt auf speziell für Ihre Eimer, gehen Sie bitte über untenstehenden Link Sie bestimmte IP erlauben können, den Zugang nutzen können. http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html

+0

hat eine Ausnahme erhalten com.amazonaws.AmazonClientException: HTTP-Anfrage konnte nicht ausgeführt werden: Gelesene Zeit überschritten. –

+0

anstelle von AmazonS3 amazons3Client = neuer AmazonS3Client (new ProfileCredentialsProvider()); Verwenden Sie Ihr AmazonS3-Client-Objekt. – KPP

+0

ya ich habe das gemacht. Ich verwende Multipart-Upload. So ändert sich die Anfrage keyName in foldername + "/" + key; ? http://docs.aws.amazon.com/AmazonS3/latest/dev/llJavaUploadFile.html –

Verwandte Themen