2013-12-11 8 views
8

Sto sviluppando un'applicazione in cui gli utenti possono pubblicare foto. Quindi voglio assicurarmi che ogni volta che la foto abbia un nome univoco. In PHP io uso per concatenare data e ora con userId. Ma in node.js non sto ottenendo il metodo per convertire il timestamp in stringa. Quindi, suggerisci gentilmente un modo per assicurarti che i miei file non abbiano nomi duplicati.Assegnare nomi univoci ai file durante il caricamento

risposta

10

Una delle soluzioni potrebbe essere quella di utilizzare UUID per un nome di file. Ma ciò dipende ovviamente dai requisiti o dai vincoli delle applicazioni (convenzione di denominazione ecc.). Tuttavia, se UUID come nome di file sarebbe accettabile, ti consiglio di usare la libreria node-uuid (molto facile da usare!).

codice di esempio:

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

E 'sicuro da usare UUID come un identificativo univoco. Puoi trovare ulteriori informazioni su SO ad es. How unique is UUID?

soluzione alternativa (dove nome unicità è un requisito) sarebbe quella di utilizzare un'altra libreria node.js: flake-idgen che genera ids senza conflitti in base al timestamp corrente. Questa soluzione garantisce numeri unici.

La soluzione è anche molto efficiente, consente di generare fino a 4096 ID in un millisecondo per generatore (è possibile avere fino a 1024 generatori unici).

Spero che possa essere d'aiuto.

+0

Questo non risponde alla domanda come ottenere un timestamp come una stringa, ma è il modo migliore per generare unica nomi di file. – TheHippo

+0

@TheHippo è vero non ho fornito la risposta per concatenare data e ora con un id utente. Mi sono concentrato su "... suggerire un modo per garantire che i miei file non abbiano nomi duplicati" - approccio diverso che è, come hai detto, migliore alternativa;) Saluti. – Tom

5

In nodo:

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

Ciò restituisce qualcosa del tipo: '1499264027973' –

4

Se si desidera utilizzare l'uso timestamp di uuid questo

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' 
Problemi correlati