2014-01-27 9 views
1

Я пытаюсь сделать это следующим образом:Как загрузить изображение на Amazon S3 в папку в рубине?

AWS.config(
     :access_key_id => '...', 
     :secret_access_key => '...' 
    ) 
    s3 = AWS::S3.new 
    bucket_name = 'bucket_name' 
key = "#{File.basename(avatar_big)}" 
s3.buckets[bucket_name].objects[key].write(:file => avatar_big_path) 

Это хорошо работает для файла, файл будет загружен в корневой каталог создан ведро.

Однако, как загрузить его в фолдер фотографий, который находится в корне?

Я попытался

key = "photos/#{File.basename(avatar_big)}" 

, но это не работает.

EDIT: сообщение об ошибке enter image description here

Спасибо

+0

Почему это не работает? вы получаете сообщение об ошибке? –

+0

Нет ошибки, но изображения сохраняются в корне, а не в соответствующей папке. – user984621

+0

Обновленный ответ. – Gotjosh

ответ

0

Try включая пути в ключевом файле:

s3.buckets[bucket_name].objects[key].write(:file => "photos/#{avatar_big_path}") 
+0

К сожалению, фото идет к корню, а не к каталогу. – user984621

+0

Все то же самое - я подключил к OP сообщение об ошибке. – user984621

1

Я была такая же проблема, как и ОП. Это то, что сработало для меня:

key = "photos/example.jpg" 
bucket = s3.buckets[bucket_name] 
filepath = Pathname.new("path/to/example.jpg") 

o = bucket.objects[key] 
o.write(filepath) 

Что-то, что я хотел бы проверить, будет ключевым ключом объекта, который вы пытаетесь использовать. Существует не так много документов о том, каковы ограничения (см. this и this), но тот, который отображается в сообщении об ошибке, выглядит подозрительным для меня.

Смежные вопросы