2013-12-11 18 views
8

私は写真を投稿できるアプリを開発しています。だから私はその写真が一意の名前を得るたびに確実にしたい。 PHPで私はuserIdとタイムスタンプを連結するために使用します。しかし、node.jsでは、タイムスタンプを文字列に変換するメソッドを取得していません。だから私のファイルが重複した名前を持たないようにする方法を提案してください。ノードでアップロード中にファイルに一意の名前を付ける

答えて

10

解決策の一つは、ファイル名にUUIDを使用することです。もちろん、アプリケーションの要件や制約(命名規則など)によって異なります。ただし、UUIDをファイル名として使用できる場合は、node-uuidライブラリを使用することをお勧めします(非常に使いやすい!)。

サンプルコード:

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

一意の識別子としてUUIDを使用しても安全です。それについてはSOなどでもっと詳しく調べることができます。 flake-idgen現在のタイムスタンプに基づいて競合のないIDを生成する:(名前の一意性が要件である)How unique is UUID?

代替溶液は、別のNode.jsライブラリーを使用することであろう。その解決法はユニークな数を保証する。

このソリューションは非常に効率的で、1ジェネレータあたり1ミリ秒で最大4096個のIDを生成できます(最大1024個のジェネレータを持つことができます)。

私は助けてくれることを願っています。

+0

これは文字列としてタイムスタンプを取得する方法を疑問に答えるが、ユニーク生成するための方法で優れていませんがファイル名。 – TheHippo

+0

@TheHippoそれは本当です私はユーザIDとタイムスタンプを連結する答えを提供していませんでした。私は '...私のファイルが重複する名前を持たないようにする方法を提案する - あなたが言ったように、より良い選択肢です。 – Tom

5

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

タイムスタンプのUUIDの使用を使用したい場合はこのようなものを返す: '1499264027973' –

4

あなたはこの

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' 
関連する問題