Пожалуйста, предложите мне способ сохранить изображение с URL-адреса с помощью скрепки.
ruby-on-rails
ruby
upload
paperclip
Khanh
источник
источник
update_attributes
переименованиеpicture_from_url
вpicture_url=(value)
.user.picture_from_url('/etc/password')
. Хотя, вероятно, в большинстве ситуаций это нормально.open(url)
, имя файла является неточным, например,open-uri20150106-10034-lpd5fm.
вместоef3a601e_ef3d008b_ef3d0f7e.jpg
.В Paperclip 3.1.4 это стало еще проще.
Это немного лучше, чем open (url). Потому что с open (url) вы получите в качестве имени файла "stringio.txt". С помощью приведенного выше вы получите собственное имя файла на основе URL-адреса. т.е.
источник
application/octet_stream
какcontent_type
.У меня это не сработало, пока я не использовал "open" для разобранного URI. как только я добавил "открыть", все заработало!
Моя версия скрепки - 4.2.1
Перед открытием он не мог правильно определить тип контента, потому что это не был файл. Он сказал бы image_content_type: "binary / octet-stream", и даже если бы я переопределил его правильным типом содержимого, это не сработало бы.
источник
Сначала загрузите изображение с
curb
драгоценным камнем в a,TempFile
а затем просто назначьте объект временного файла и сохраните свою модель.источник
Это может быть вам полезно. Вот код с использованием скрепки и изображения в удаленном URL-адресе.
В модели
источник
Поскольку это старые ответы, вот и новый:
Добавьте удаленный URL-адрес изображения на желаемый контроллер в базе данных
Отредактируйте вашу модель
* В Rails4 вам нужно добавить attr_accessible в Контроллер.
Обновите свою форму, если вы разрешаете другим загружать изображение с URL-адреса
источник
super
?super
используется для вызова исходного метода, поиск тела метода начинается в суперклассе объекта, который, как было обнаружено, содержит исходный методЭто хардкорный метод:
где Uuid.uuid просто создает случайный идентификатор.
источник
В официальной документации сообщается здесь https://github.com/gotitbot/paperclip/wiki/Attachment-downloaded-from-a-URL
В любом случае он кажется не обновленным, потому что в последней версии скрепки что-то изменилось, и эта строка кода больше не действительна:
Это вызывает ошибку, в частности, возникает эта ошибка:
Новый правильный синтаксис:
Также нам нужно добавить эти строки в файл config / initializers / paperclip.rb :
Протестировал это с версией скрепки,
5.3.0
и она работает.источник