>

ImageMagick을 설치했고 gem Paperclip (버전 4.0)을 설치했습니다. 다음을 추가했습니다 :

Paperclip.options[:command_path] = 'C:\Program Files\ImageMagick-6.8.8-Q16'

developer.rb에

내 photo.rb 모델은 다음과 같습니다.

has_attached_file :image
validates_attachment_content_type :image, :content_type => ['image/jpeg', 'image/png', 'image/jpg']

photos/new.html.erb에서 파일을 선택할 수 있지만 '사진 만들기'버튼을 클릭하면 클립 관련 오류 메시지와 함께 페이지가 다시로드됩니다 :

1 error prohibited this photo from being saved:
Image translation missing: 
en.activerecord.errors.models.photo.attributes.image.spoofed_media_type

다른 사람이 도와 줄 수 있습니까? 감사합니다

  • 답변 # 1

    이 메시지는 콘텐츠 스푸핑에 대한 유효성 검사를 통해 발생합니다.

    Paperclip v.4의 경우 버그가 발생합니다 https://github.com/thoughtbot/paperclip/issues/1429

    Paperclip v.3의 경우, 사용 중단 경고가 표시되는 것 같습니다 : https://github.com/thoughtbot/paperclip/issues/1423

    따라서 Paperclip 팀이 버전 4를 사용하기 전에이 버그가 해결 될 때까지 기다립니다. 현재 버전 3을 계속 사용하고 싶습니다.

    gem "paperclip", "~> 3.5.3"
    
    

  • 답변 # 2

    스푸핑 방지 기능을 비활성화하려면 이니셜 라이저에 추가하십시오 :

    require 'paperclip/media_type_spoof_detector'
    module Paperclip
      class MediaTypeSpoofDetector
        def spoofed?
          false
        end
      end
    end
    
    

  • 답변 # 3

    Paperclip v3.5.1 에서 작동합니다  (아직도 V4 에서 작동합니다. ) :

    has_attached_file :attachment,
            styles: lambda { |a| a.instance.is_image? ? { *** image_styles ***}  : { *** video_styles ***},
            processors: lambda { |a| a.is_video? ? [ :ffmpeg ] : [ :thumbnail ] }
    def is_video?
        attachment.instance.attachment_content_type =~ %r(video)
    end
    def is_image?
        attachment.instance.attachment_content_type =~ %r(image)
    end
    
    

관련 자료

  • 이전 camera - iPhone에서 ExposureMode AVCaptureExposureModeAutoExpose가 지원되지 않습니다
  • 다음 scala - Spark의 기능 벡터에 IndexToString 적용