-
Notifications
You must be signed in to change notification settings - Fork 1.6k
How to: Use file`s MD5 as filename
nofxx edited this page Sep 28, 2011
·
9 revisions
Inside your uploader class:
def md5
chunk = model.#your upload_field - need to make smarter...
@md5 ||= Digest::MD5.hexdigest(chunk.read)
end
def filename
@name ||= "#{md5}#{File.extname(super)}" if super
end
Optionally, save the md5 in the DB too. Mongoid example:
class Asset
include Mongoid::Document
...
field :md5
mount_uploader :data, AssetUploader
validates_uniqueness_of :md5
before_save :update_data_attributes
private
def update_data_attributes
if data.present? && data_changed?
self.md5 = data.md5
end
end
This is also good to ensure unique/remove duplicates.