Загрузка уже загруженного файла на сервер S3 с помощью скрепки в рельсах без загрузки этого файла

Я пытаюсь найти способы загрузить «уже загруженный файл» на сервер S3, не загружая этот файл с сервера S3 с помощью скрепки.

Прямой способ - загрузить этот файл с S3 в локальную систему и повторно загрузить его на S3 с помощью скрепки, но я пытаюсь избежать загрузки файла с S3.

Пожалуйста, помогите мне, если мы можем загрузить этот файл напрямую, используя URL-адрес S3.

Заранее спасибо.

  • Нивас

person user1509711    schedule 08.07.2012    source источник
comment
Для чего вам это нужно? Переход в другой каталог?   -  person Zabba    schedule 08.07.2012
comment
@Zabba: Нет, я хочу иметь дубликат того же существующего файла на сервере S3. Чтобы иметь это, я не хочу загружать существующий файл и повторно загружать его. Вместо этого я ищу способы, с помощью которых мы можем этого добиться.   -  person user1509711    schedule 08.07.2012


Ответы (1)


Вот простой способ:

require "open-uri"

class User < ActiveRecord::Base
  has_attached_file :picture

  def picture_from_url(url)
    self.picture = open(url)
  end
end

Тогда просто:

user.picture_from_url "http://media-cache-ec5.pinterest.com/upload/262827328223677179_oN7ufeP3_f.jpg"
person Mohit Jain    schedule 08.07.2012
comment
Спасибо за ответ. Не могли бы вы уточнить это, используя плагин для загрузки файлов скрепки? Будет ли этот подход извлекать значения для атрибутов, таких как имя_файла, размер_файла, тип_файла и т.д.... - person user1509711; 08.07.2012
comment
@user1509711 user1509711 Да, попробуйте и дайте мне знать, если у вас возникнут какие-либо проблемы. Я использую тот же код в своем проекте. - person Mohit Jain; 08.07.2012
comment
Спасибо, вроде работает. Не могли бы вы сказать мне, будет ли он временно загружать файл с удаленного URL-адреса в локальную систему и повторно загружать его на сервер или он будет загружаться напрямую с удаленного URL-адреса? - person user1509711; 09.07.2012
comment
После того, как вы развернете свое приложение на сервере. Он будет напрямую извлекать изображение из URL-адреса и сохранять на вашем сервере. Нет необходимости загружать вручную. - person Mohit Jain; 09.07.2012