Ho una tabella di database che contiene id, filename, userId
- id è un identificativo univoco
- filename dovrebbe anche essere univoco La tabella
- potrebbe contenere > 10000 record
When a user uploads a file it should be entered in database with given rules:
- Se non ci sono record con lo stesso nome file, dovrebbe essere aggiunto come è (Es. foobar.pdf )
- Se c'è record con lo stesso nome file , dovrebbe essere aggiunto come uploadName (2) .ext ( foobar (2) .pdf )
- Se ci sono n record con lo stesso nome file di base ( foobar ), dovrebbe essere aggiunto come uploadName (n + 1) .ext ( foobar (20 ) .pdf )
- Ora se foobar (2) .pdf è caricato, dovrebbe essere aggiunto come foobar (2) (2) .pdf & così via
This pattern needs to be followed because the file is already being uploaded at client side using ajax before sending the details to server and the file hosting service follows the above rules to name the files.
La mia soluzione:
- conserva un file che contiene tutti i nomi e il numero di volte è successo.
- se viene inserito un nome file esistente nel file, aumenta il conteggio delle occorrenze e viene generato un nuovo nome, altrimenti aggiungilo al file
- se il nuovo nome generato è nel database, aggiungilo al file e genera nuovo nome