私が知っ2つの方法があります。ユニークな名前で、オリジナルを保存することができますファイル名を変更してクラッシュを避けてください。関連するファイル(画像サムネイルなど)を元のファイルに保存する場合は、この方法を使用すると作業がはるかに簡単になります。
UUIDを使用して一意のフォルダ名を生成できます.UUIDは、実質的には衝突しないことが保証されている文字列です。 uuidのように、UUIDを生成するためのNode.jsライブラリがたくさんあります。またはランダムな文字列を使用して、フォルダがすでに存在するかどうかを確認してください。
また、指定した例のように、フォルダ名は日付と時刻によって生成されますが、1つの時点で1つの項目を追加するだけでなく、 iPhotoの例のように日付を入力します。 iPhotoの日付付きフォルダは、フォルダ名としてもランダムな文字列を使用している場合はおそらく必要ありませんが、フォルダを手動で参照しているユーザーにとっては使いやすく、iPhotoにディレクトリリストが必要な場合はパフォーマンス上の利点があります特定の日付
ファイルを読み込むためにフォルダ名とファイル名の両方への参照を格納する必要がありますが、もちろんこれは1つの文字列にすることができます。 "6c84fb90-12c4-11e1-840d-7b25c5ee775a/image.jpg"
。
ユニークなファイル名
別の技術は、衝突があるたびに一意の名前を持つようにファイル名を変更することです。これは、新しいフォルダを作成したり、ファイルを複製したりするときにmacOS Finderが使用するアプローチです。この方法は通常、ユーザーが無意味な名前のフォルダをナビゲートする必要がないため、ファイルと直接対話できる場合に最適です。
単純な例として、ペンギンの写真を追加していて、すでにpenguin.jpg
という写真が追加されているとします。
今私はpenguin.jpg
と呼ばれることもある2番目の写真を追加します。
penguin.jpg
が存在するかどうかを確認します。そう、そう...
- ファイルの新しい名前を生成します。
penguin-2.jpg
penguin-2.jpg
が存在するかどうかを確認します。それは(私もpenguin.jpg
と呼ばれる複数のファイルを追加する場合、プログラムは、私は存在しないものを見つけるまで、名前をインクリメントしておく必要がpenguin-2.jpg
として新しいファイルをしないので、...
保存例えばpenguin-3.jpg
)。同じ名前のファイルを何千も追加しない限り、パフォーマンスの問題は発生しません(これはおそらくないようです)。 私はあなたのために、このアプローチを扱うことができるNode.jsのモジュールを見つけました:uniquefilename
は、フォルダ名としてGUIDを使用してください。 – dbugger