Загрузка файлов на S3 с помощью AmazonS3Client.java api - PullRequest
2 голосов
/ 29 июня 2011

Я использую AmazonS3Client.java для загрузки файлов на S3 из моего приложения. Я использую метод putObject для загрузки файла

val putObjectRequest = new PutObjectRequest(bucketName, key, inputStream, metadata)
val acl = CannedAccessControlList.Private
putObjectRequest.setCannedAcl(acl)
s3.putObject(putObjectRequest)

Это работает для сегментов на самом верхнем уровне в моей учетной записи S3. Теперь предположим, что я хочу загрузить файл во вложенное ведро, например bucketB, которое находится внутри bucketA. Как мне указать имя корзины для bucketB?

Спасибо

Ответы [ 2 ]

5 голосов
/ 29 июня 2011

Это, по общему признанию, несколько удивительно, но в S3 нет такого понятия, как «ведро».Все ведра на высшем уровне.Структуры внутри сегментов, которые вы видите в консоли администратора S3 или других пользовательских интерфейсах, называются «папками», но даже они на самом деле не существуют!Например, вы не можете напрямую создавать или уничтожать папки или устанавливать на них какие-либо атрибуты.Папки - это просто соглашение на уровне представления для просмотра базового плоского набора объектов в вашем ведре.Тем не менее, довольно легко разбить ваши объекты на (полностью несуществующие) папки.Просто дайте им иерархические имена, с каждым уровнем, разделенным "/".

val putObjectRequest = new PutObjectRequest(bucketName, topFolderName +"/" + subFolderName+ "/" +key, inputStream, metadata)
1 голос
/ 29 июня 2011

Попытка использования putObjectRequest.setKey("folder")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...