2013-12-11 61 views
8

我正在開發一個應用程序,用戶可以在其中發佈圖片。所以我想確保每次圖片獲得唯一的名稱。在PHP中,我使用連接時間戳與userId。但在node.js中,我沒有獲得將時間戳轉換爲字符串的方法。所以請提供一種方法來確保我的文件不會有重複的名稱。上傳文件時爲文件提供唯一名稱

回答

10

解決的辦法之一是使用UUID一個文件名。但是這當然取決於您的應用程序需求或約束(命名約定等)。但是,如果UUID作爲文件名是可以接受的,我推薦使用node-uuid庫(非常容易使用!)。

示例代碼:

var uuidv4 = require('uuid/v4'); 
var filename = uuidv4() + '.png' 

它是安全使用UUID作爲唯一標識符。您可以在SO上找到更多信息,例如How unique is UUID?

替代溶液(其中名的唯一性是要求)是使用另一個的node.js庫:flake-idgen,其基於當前的時間戳無衝突標識。該解決方案保證唯一的數字

該解決方案也非常高效,允許每個發生器在一毫秒內生成多達4096個ID(最多可以有1024個唯一的生成器)。

我希望這會有所幫助。

+0

這不回答這個問題如何得到時間戳作爲字符串,但對於產生獨特的方式更好文件名稱。 – TheHippo

+0

@TheHippo這是真的我沒有提供答案連接時間戳與用戶ID。我專注於......建議一種方法來確保我的文件不會出現重複的名稱 - 正如您所說,這是另一種更好的替代方法;)關心。 – Tom

5

在節點:

timestamp = new Date().getTime().toString(); 
+0

這將返回類似:'1499264027973' –

4

如果你想使用時間戳UUID的使用這種

var uuid = require('uuid'); 

// Generate a v1 (time-based) id 
uuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a' 

// Generate a v4 (random) id 
uuid.v4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1'