Я работаю с Fog и Amazon s3 для управления файлами видео и изображений. У меня было много проблем с настройкой content_type для моих файлов.
При работе с консоли я могу просмотреть и индивидуально обновить content_type каждого файла, а затем запустить save. Однако, когда я пытаюсь запустить обновление для всех файлов в определенном каталоге, я не получаю сообщения об ошибке, но ничего не обновляется. Я запустил несколько разных методов, все с одной и той же основной идеей, и все настроены на печать «сохранено!» если файл сохранится. Методы работают правильно и выводят «сохранено!», но когда я возвращаюсь и проверяю файлы, content_type по-прежнему равен нулю.
Вот пример того, что я делаю:
directory.files.each do |f|
case f.key.split(".").last
when "jpg"
f.content_type = "image/jpeg"
puts "saved!" if f.save
when "mov"
f.content_type = "video/quicktime"
puts "saved!" if f.save
end
end
Кроме того, когда я просматриваю и индивидуально обновляю каждый файл, сохранение работает, и content_type обновляется, но данные не сохраняются.
Например:
file = directory.files.first
file.content_type = 'video/quicktime'
file.save # returns true
file.content_type # returns 'video/quicktime'
Однако, когда я проверяю файл в AWS, тип содержимого по-прежнему нулевой.
Есть ли лучший (постоянный) способ обновления content_type в файлах Fog s3? Я чувствую, что я должен идти об этом неправильно.
Обновление: пытался использовать метод file#copy:
directory.files.each do |f|
content_type = case f.key.split(".").last
when "jpg"
"image/jpeg"
when "mov"
"video/quicktime"
end
puts "copied!" if f.copy(f.directory.key, f.key, { 'Content-Type' => content_type })
end
Я получил ошибку:
Excon::Errors::BadRequest: Expected(200) <=> Actual(400 Bad Request)
from /Users/marybethlee/.rvm/gems/ruby-2.0.0-p0@mothership/gems/excon-0.22.1/lib/excon/middlewares/expects.rb:6:in `response_call'
from /Users/marybethlee/.rvm/gems/ruby-2.0.0-p0@mothership/gems/excon-0.22.1/lib/excon/connection.rb:355:in `response'
from /Users/marybethlee/.rvm/gems/ruby-2.0.0-p0@mothership/gems/excon-0.22.1/lib/excon/connection.rb:249:in `request'
from /Users/marybethlee/.rvm/gems/ruby-2.0.0-p0@mothership/gems/fog-1.11.1/lib/fog/core/connection.rb:21:in `request'
from /Users/marybethlee/.rvm/gems/ruby-2.0.0-p0@mothership/gems/fog-1.11.1/lib/fog/aws/storage.rb:506:in `request'
from /Users/marybethlee/.rvm/gems/ruby-2.0.0-p0@mothership/gems/fog-1.11.1/lib/fog/aws/requests/storage/copy_object.rb:33:in `copy_object'
from /Users/marybethlee/.rvm/gems/ruby-2.0.0-p0@mothership/gems/fog-1.11.1/lib/fog/aws/models/storage/file.rb:93:in `copy'
from (irb):14
from /Users/marybethlee/.rvm/rubies/ruby-2.0.0-p0/bin/irb:16:in `<main>'