[RUBY-ON-RAILS] 클립에 의해 URL에서 이미지 저장
RUBY-ON-RAILS클립에 의해 URL에서 이미지 저장
나에게 종이 클립에 의해 URL에서 이미지를 저장하는 방법을 제안 해주십시오.
해결법
-
==============================
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://www.google.com/images/logos/ps_logo2.png"
-
==============================
2.종이 클립 3.1.4에서 그것은 더 간단되고있다.
종이 클립 3.1.4에서 그것은 더 간단되고있다.
def picture_from_url(url) self.picture = URI.parse(url) end
이 오픈 (URL)보다 약간 낫다. 때문에 개방 (URL)와 함께 사용하면 파일 이름으로 "stringio.txt"을받을거야. URL을 기반으로 파일의 적절한 이름을받을거야 당신이 위의로. 즉
self.picture = URI.parse("http://something.com/blah/avatar.png") self.picture_file_name # => "avatar.png" self.picture_content_type # => "image/png"
-
==============================
3.내가 구문 분석 URI에 대한 "열기"를 사용 할 때까지 나를 위해 작동하지 않았다. 내가 "열기"를 추가하면 일했다!
내가 구문 분석 URI에 대한 "열기"를 사용 할 때까지 나를 위해 작동하지 않았다. 내가 "열기"를 추가하면 일했다!
def picture_from_url(url) self.picture = URI.parse(url).open end
내 클립 버전은 4.2.1이다
이 파일 없었기 때문에 공개하기 전에 그것은, 컨텐츠 타입 권리를 감지하지 않을 것입니다. 나는 그것이 작동하지 않을 권리 콘텐츠 형식을 오버라이드 (override) "이진 / 진수 스트림", 심지어 경우 : 그것은 image_content_type 말할 것입니다.
-
==============================
4.먼저 임시 파일에 재갈 보석으로 이미지를 다운로드 한 다음 단순히 임시 파일 객체를 할당하고 모델 저장.
먼저 임시 파일에 재갈 보석으로 이미지를 다운로드 한 다음 단순히 임시 파일 객체를 할당하고 모델 저장.
-
==============================
5.그것은 당신에게 도움이 할 수있다. 여기서 원격 URL의 클립 화상을 현재 사용하는 코드이다.
그것은 당신에게 도움이 할 수있다. 여기서 원격 URL의 클립 화상을 현재 사용하는 코드이다.
require 'rubygems' require 'open-uri' require 'paperclip' model.update_attribute(:photo,open(website_vehicle.image_url))
모델에서
class Model < ActiveRecord::Base has_attached_file :photo, :styles => { :small => "150x150>", :thumb => "75x75>" } end
-
==============================
6.그 오래된 대답은 여기에 새로운 하나입니다 :
그 오래된 대답은 여기에 새로운 하나입니다 :
데이터베이스에서 원하는 컨트롤러로 이미지 원격 URL 추가
$ rails generate migration AddImageRemoteUrlToYour_Controller image_remote_url:string $ rake db:migrate
모델을 수정
attr_accessible :description, :image, :image_remote_url . . . def image_remote_url=(url_value) self.image = URI.parse(url_value) unless url_value.blank? super end
*에서 Rails4 당신은 컨트롤러에 attr_accessible을 추가해야합니다.
당신이 URL에서 이미지를 업로드 할 다른 허용하는 경우, 양식 업데이트
<%= f.input :image_remote_url, label: "Enter a URL" %>
-
==============================
7.이것은 하드 코어 방법입니다 :
이것은 하드 코어 방법입니다 :
original_url = url.gsub(/\?.*$/, '') filename = original_url.gsub(/^.*\//, '') extension = File.extname(filename) temp_images = Magick::Image.from_blob open(url).read temp_images[0].write(url = "/tmp/#{Uuid.uuid}#{extension}") self.file = File.open(url)
어디 Uuid.uuid는 어떤 임의의 ID를합니다.
-
==============================
8.공식 문서로 여기 https://github.com/thoughtbot/paperclip/wiki/Attachment-downloaded-from-a-URL보고
공식 문서로 여기 https://github.com/thoughtbot/paperclip/wiki/Attachment-downloaded-from-a-URL보고
어쨌든 그것은 변경 되었기 때문에 클립 뭔가의 마지막 버전으로 업데이트되지 보인다 및 코드 줄은 더 이상 유효하지 않습니다 :
user.picture = URI.parse(url)
그것은이 오류가 발생, 특히 오류를 인상 :
Paperclip::AdapterRegistry::NoHandlerError: No handler found for #<URI:: ...
새로운 올바른 구문이 하나입니다 :
url = "https://www.example.com/photo.jpeg" user.picture = Paperclip.io_adapters.for(URI.parse(url).to_s, { hash_digest: Digest::MD5 })
또한 우리는 설정 / 초기화 / paperclip.rb 파일에 다음 줄을 추가합니다 :
Paperclip::DataUriAdapter.register Paperclip::HttpUrlProxyAdapter.register
클립 버전 5.3.0로 이것을 테스트하고 그것을 작동합니다.
from https://stackoverflow.com/questions/4049709/save-image-from-url-by-paperclip by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 초기화되지 않은 상수의 ActiveSupport :: 종속성 :: 뮤텍스 (나가서 설명하자면 NameError) (0) | 2020.02.05 |
---|---|
[RUBY-ON-RAILS] 레일에 대한 해제 액티브 4 (0) | 2020.02.05 |
[RUBY-ON-RAILS] " ''생산 '환경에 대한 secret_key_base` 없음"오류를 해결하는 방법 (4.1 레일) (0) | 2020.02.05 |
[RUBY-ON-RAILS] 고유 객체 ID 필드 대 복합 기본 키 (0) | 2020.02.05 |
[RUBY-ON-RAILS] 액티브, has_many : 통해, 그리고 다형성 협회 (0) | 2020.02.05 |