Проблема сохранения изображений Facebook с помощью Paperclip на Rails 3 из-за дубликатов - PullRequest
0 голосов
/ 24 июля 2011

Я использую гем скрепки с Omniauth (с Facebook) в приложении Rails 3.Все изображения профиля сохраняются в Amazon S3.

Теперь проблема, с которой я сталкиваюсь, заключается в том, что многие изображения сохраняются как stringio.txt, что приводит к дублированию изображений.Это означает, что у некоторых из моих пользователей есть изображения профилей, которые не являются их собственными.

Кажется, что эти изображения также появляются, когда само изображение имеет размер более 10 КБ.сохранение напрямую с использованием open-uri

self.avatar = open(omniauth['user_info']['image'].sub("square","large"))

Ответы [ 3 ]

6 голосов
/ 16 февраля 2012

Я нашел это решение:

В модели, где у меня есть изображение скрепки

before_post_process :transliterate_file_name

private

  def transliterate_file_name
    extension = 'JPG'
    filename = photo_file_name
    self.photo.instance_write(:file_name, "#{filename}.#{extension}")
  end

Это работает хорошо, но в моем случае у меня также есть изображения из обычных форм, поэтому яЯ думаю, что это странно.Если все фотографии с Facebook, все будет идеально.

4 голосов
/ 28 мая 2013

Еще одна альтернатива в Paperclip> = 3.1.4 это (вместо использования open-uri)

  def avatar_remote_url=(url_value)
    self.avatar = URI.parse(url_value)
    # Assuming url_value is http://example.com/photos/face.png
    # avatar_file_name == "face.png"
    # avatar_content_type == "image/png"
    @avatar_remote_url = url_value
  end

через https://github.com/thoughtbot/paperclip/wiki/Attachment-downloaded-from-a-URL

2 голосов
/ 24 июля 2011

Просто хэшируйте имя файла, используя Digest::MD5.hexdigest в сочетании с некоторым случайным значением и, возможно, отметкой времени.

...