У меня есть URL-адрес изображения, которое я хочу сохранить локально, чтобы я мог использовать Paperclip для создания эскиза для своего приложения. Какой лучший способ загрузить и сохранить изображение? (Я изучал обработку файлов ruby, но ничего не нашел.)
ruby-on-rails
ruby
file-handling
Алок Суэйн
источник
источник
IO.copy_stream(open('http://example.com/image.png'), 'destination.png')
require 'open-uri'
, просто использовал код под нимЕще более короткая версия:
Чтобы сохранить то же имя файла:
источник
Если вы используете PaperClip, загрузка с URL-адреса теперь обрабатывается автоматически.
Предполагая, что у вас есть что-то вроде:
В вашей модели просто укажите изображение в виде URL-адреса, примерно так (написано намеренно):
Возможно, вы захотите поместить это в метод вашей модели. Это также будет отлично работать на временной файловой системе Heroku.
Скрепка возьмет это оттуда.
источник: документация по скрепке
источник
Я думаю, что это самый ясный способ:
источник
Проверьте Net :: HTTP в стандартной библиотеке. В документации приведено несколько примеров загрузки документов с использованием HTTP.
источник
Kernel#open
позволяет не только получить доступ к файлу, но и вызвать процесс, добавив префикс символа канала (например,open("| ls")
). Таким образом, это может привести к серьезной угрозе безопасности, если использовать переменные для ввода аргументаKernel#open
.