[ruby-on-rails] URL에서 파일을 다운로드하여 Rails에 저장하려면 어떻게해야합니까?

로컬로 저장하려는 이미지의 URL이 있으므로 Paperclip을 사용하여 응용 프로그램의 축소판을 만들 수 있습니다. 이미지를 다운로드하고 저장하는 가장 좋은 방법은 무엇입니까? (루비 파일 처리를 조사했지만 아무것도 보지 못했습니다.)



답변

이 시도:

require 'open-uri'
open('image.png', 'wb') do |file|
  file << open('http://example.com/image.png').read
end


답변

더 짧은 버전 :

require 'open-uri'
download = open('http://example.com/image.png')
IO.copy_stream(download, '~/image.png')

동일한 파일 이름을 유지하려면

IO.copy_stream(download, "~/#{download.base_uri.to_s.split('/')[-1]}")


답변

PaperClip을 사용하는 경우 이제 URL에서 다운로드하면 자동으로 처리됩니다.

다음과 같은 것이 있다고 가정합니다.

class MyModel < ActiveRecord::Base
  has_attached_file :image, ...
end

모델에서 이미지를 다음과 같이 URL로 지정하십시오 (고의적으로 작성 됨).

@my_model = MyModel.new
image_url = params[:image_url]
@my_model.image = URI.parse(image_url)

아마도 이것을 모델의 메소드에 넣기를 원할 것입니다. 이것은 Heroku의 임시 파일 시스템에서도 잘 작동합니다.

클립이 거기에서 가져옵니다.

출처 : 클립 문서


답변

이것이 가장 명확한 방법이라고 생각합니다.

require 'open-uri'

File.write 'image.png', open('http://example.com/image.png').read


답변

표준 라이브러리에서 Net :: HTTP 를 확인하십시오 . 이 문서는 HTTP를 사용하여 문서를 다운로드하는 방법에 대한 몇 가지 예를 제공합니다.


답변