로컬로 저장하려는 이미지의 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