2012-06-15 50 views
0

我正在使用表單將文件(圖像)上載到我的服務器。我怎樣才能防止相同的圖像上傳兩次?我不可能看到相同標題存在的圖像,因爲相同的圖像可以具有不同的標題,並且不同的圖像可以具有相同的標題。 任何幫助表示讚賞。防止在數據庫中重複輸入

+6

爲圖像的二進制數據創建一個散列並比較 – CodeZombie

+0

比較散列? 'md5(file_get_contents(「image1」))== md5(file_get_contents(「image2」))' –

+0

考慮到這可能是一個相當耗費資源的操作。 – Sherlock

回答

3

創建一個像ZombieHunter建議的散列。爲什麼?因爲如果圖像已經存在,就可以輕鬆快速地搜索並檢查散列表。不幸的是,像md5或md5_file這樣的散列metdods在現有文件上工作,而不是在遠程文件上工作。所以你將不得不上傳文件。你可以做的是決定是否保留或不保存文件。如果你從一個在線資源獲取文件,也許有辦法從頭文件檢測文件的大小,並運行一個哈希而不下載它,但這是一個特例。

此外,如果您有其他業務邏輯附加到這些圖像,像userHasImages或companyHasImages的概念,您可以在名稱空間/文件夾/標籤中組織它們,以便您可以進一步加快搜索速度。

根據嚴格意義上的數據庫防止重複條目,對包含散列的列使用唯一索引。