2014-09-29 77 views
4

我有PHP代碼可以同時上傳多個文件。目前我正在使用name_timestamp模式作爲文件名 - 以保持唯一性。現在需要的是,假設我上傳了兩次沙漠圖片(內容保持不變),那麼將有2個條目與該時間戳。 例如:多個圖片上傳後的唯一名稱

Desert_201409281000.jpg 
Desert_201409282000.jpg 

是否有可能像顯示照片1只爲這一些獨特的名字嗎?

我試着用JQuery做這個,但我想要一個PHP解決方案。

+0

當保存在你的PHP代碼的文件,或許檢查該文件在保存之前首先存在。您可以在添加時間戳後立即執行此操作。 – RDL 2014-09-29 18:19:45

+0

Desert_201409281000.jpg Desert_201409282000.jpg爲什麼這樣的名字?他們會一直這樣嗎? – vks 2014-09-29 18:22:04

+0

我不明白這個問題。這部分'是否有可能爲此僅顯示一些像PHOTO1這樣的獨特名稱?'詳細闡述一下。如果你想要唯一性,試着將'uniqid()'和你現在使用的**結合起來,**如果**那就是你所要求的。 **編輯:**我認爲BojanT提到的,可能是你需要使用/做的。 – 2014-09-29 18:23:58

回答

0

你是如何上傳圖片?

  • 如果通過外部URL,那麼你可以只檢查是否有重複的URL

  • 如果從計算機,那麼你可以使用一些PHP庫中是否有重複的圖像,然後應用時間戳和方式將文件重命名爲單個Photo1.jpg文件...

  • 我相信你需要時間戳,如果沒有,那麼很明顯,時間戳圖像列表中圖像的第一次出現可以保留爲所有人的名字重複!

而且,尋找一個PHP的解決方案來複製圖像文件後,我找到了這個網頁:::: link :::]

本頁面顯示,PHP有一個叫做MD5的內置功能,來檢查的MD5值的任何文件。如果您將md5文件名存儲在SQL中,那麼在PHP中,您可以搜索SQL表中上載文件的md5值的任何匹配項,並根據您的要求重命名文件。

下面就來驗證從MYSQL表中的MD5值代碼:

$sign = md5(file_get_contents($filename)); //This will create an unique md5 signature for every picture 

//You could now store that hash in your database and check for duplicates at every upload 
$results = mysql_query("SELECT file FROM images WHERE signature=" . $sign); 
if ($row = mysql_fetch_array($results)) { 
    //Duplicate found, $row['file'] contains name 
} 

如所建議的,你也可以使用:$sign = md5_file($filename);sha1

+0

是否可以僅處理數組...像映射如果有任何匹配的數組鍵值與數值相符,將顯示PHOTO 1。 – 2014-10-07 18:04:23

+0

我不確定你的意思是用值映射數組......我想你可以用for循環來做到這一點。 – mk117 2014-10-07 18:09:56