如何使用回形针检查文件是否与目录中的另一个文件相同

时间:2012-04-23 00:46:47

标签: ruby-on-rails ruby paperclip

我有一个rails应用程序,其中一个上传一首歌,我试图将该歌曲与资产目录中的所有其他歌曲进行比较。如果歌曲相同,我想删除上传并将所有查询路由到主歌曲。

我正在考虑建立一个主歌曲上传许多用户歌曲的关联,但默认情况下,用户关联的主歌曲ID为零。如何检查资源中的歌曲是否相等,以及如何删除歌曲并将请求路由到主歌曲。

这是我的user_song_uploads数据库:

class CreateUserSongUploads < ActiveRecord::Migration
  def change
    create_table :user_song_uploads do |t|
        t.integer :user_id
        t.has_attached_file :song
            :url => "/assets/user_song_uploads/:id/",
            :path =>  "#{rails.root}/assets/user_song_uploads/:id/",
      t.timestamps
      t.string :artist
      t.string :album
      t.string :title
    end
  end
end

我的master_song db:

 t.has_attached_file :m_song
     :url => "/assets/master_songs/:id",
     :path =>  "#{rails.root}/assets/master_songs/:id",

有什么想法吗?非常感谢你。

1 个答案:

答案 0 :(得分:1)

文件级别比较:

制作文件的md5 / sha1校验和并将其保留在db,当下次上传时,上传完成时首先比较校验和,如果相同则只链接它们。

这类似于ZFS文件系统重复数据删除。