Направляющие: предотвращение дублирующихся фото загрузок со скрепкой?

Там должен так или иначе бросить ошибку проверки, если пользователь пытается загрузить ту же фотографию дважды на приложение для направляющих с помощью Скрепки? Скрепка, кажется, не предлагает эту функциональность...

Я использую направляющие 2.3.5 и Скрепку (очевидно).


РЕШЕНИЕ: (или один из них, по крайней мере)

Используя предложение Beerlington, я решил пойти со сравнением Контрольной суммы MD5:

class Photo < ActiveRecord::Base
  #...
  has_attached_file :image #, ...

  before_validation_on_create :generate_md5_checksum
  validate :unique_photo
  #...

  def generate_md5_checksum
    self.md5_checksum = Digest::MD5.hexdigest(image.to_file.read)
  end

  def unique_photo
    photo_digest = self.md5_checksum
    errors.add_to_base "You have already uploaded that file!" unless User.find(self.user_id).photos.find_by_md5_checksum(photo_digest).nil?
  end

  # ...
end

Затем я просто добавил столбец к моему photos таблицу называют md5_checksum, и вуаля! Теперь мое приложение бросает ошибку проверки, при попытке загрузить ту же фотографию!

Никакая идея, насколько эффективный/неэффективный это, таким образом, приветствие рефакторинга!

Спасибо!

10
задан neezer 17 March 2010 в 17:25
поделиться

2 ответа

Как насчет того, чтобы сделать MD5 для файла изображения? Если это один и тот же файл, хэш MD5 будет одинаковым для обоих изображений.

11
ответ дан 3 December 2019 в 16:52
поделиться

Как указал Стивен, ваша самая большая проблема - как определить, является ли файл дубликатом, и на этот вопрос нет четкого ответа.

Если это фотографии, сделанные цифровой камерой, вы можете сравнить данные EXIF. Если данные EXIF ​​совпадают, фотография, скорее всего, является дубликатом. Если это дубликат, вы можете сообщить об этом пользователю. Однако сначала вам нужно будет принять загрузку, чтобы проверить данные EXIF.

Я должен упомянуть, что EXIFR - хороший рубиновый драгоценный камень для исследования данных EXIF.

0
ответ дан 3 December 2019 в 16:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: