我們的項目中有一個來自客戶端的文件具有相同的文件名,有時也具有相同的文件大小。目前,當我們上傳文件時,我們正在檢查數據庫中現有文件的新文件名,如果有參考文件,我們將其標記爲重複文件,並且根本不允許上傳。但是現在我們有要求在文件名相同時檢查文件的內容。所以我們需要找出一個解決方案,根據內容區分這些文件。那麼,我們如何有效地做到這一點 - 意味着如何做到這一點,以避免一分鐘的錯誤機會?唯一標識具有相同名稱和大小但具有不同內容的文件
的Rails 3.1的Ruby 1.9.3
下面是一個選項,我已經從一個Web引用讀取。
require 'digest'
digest_value = Digest::MD5.base64digest(File.read(file_path))
而上述行將讀取傳入文件的所有內容,並根據它將生成一個唯一的散列,對不對?然後我們可以使用它來進行獨特的文件識別。但我們有超過500名用戶同時以24/7模式工作,其中大多數用戶將會進行此操作。因此,如果傳入文件的大小很大(大於25MB),那麼摘要將花費更多時間來讀取整個內容,並因此遇到性能問題。那麼,考慮到所有這些事實,更好的解決方案是什麼呢?
爲什麼不給每個上傳的文件一個唯一的生成的ID,而與它的名稱,類型或內容無關? –
@maxpleaner:隨機ID?我們還必須根據內容找出重複內容。現在,如果一個文件具有相同的名稱,我們說它是重複的。但是可能會出現file_name,甚至file_size都可能相同的情況。因此,我們需要根據內容唯一標識文件,然後如果相同,請輸入消息「文件重複」。 –