uniquefilename
TypeScript icon, indicating that this package has built-in type declarations

1.1.2 • Public • Published

uniquefilename

npm version Travis bitHound Score Coverage Status

A module to get a filename - that doesn't already exist on the filesystem - using incremental values.

Install

npm install uniquefilename

Usage

uniquefilename.get(filepath, [options], [callback])

Basic example

var uniquefilename = require('uniquefilename');
options = {};
uniquefilename.get('/path/to/dir/file.jpg', options, function(filename) {
  // filename might be "/path/to/dir/file.jpg", 
  // "/path/to/dir/file-2.jpg", "/path/to/dir/file-3.jpg", etc...
  // depending on the files that exist on your filesystem
});

Example with promises

If a callback is not supplied, a Promise is returned (using bluebird).

var uniquefilename = require('uniquefilename');
uniquefilename.get('/path/to/dir/file.jpg', {}).then(function (filename) {
  console.log(filename);
});

Advanced example

var uniquefilename = require('uniquefilename');
options = {separator: '~', paddingCharacter: '0', paddingSize: 4, mode: 'alphanumeric'};
uniquefilename.get('/path/to/dir/file.jpg', options, function(filename) {
  // filename might be "/path/to/dir/file.jpg", 
  // "/path/to/dir/file~000h.jpg", "/path/to/dir/file~00h9.jpg", etc...
  // depending on the files that exist on your filesystem
});

Options

separator

If the specified filename exists, the separator will be added before the incremental value such as: file{separator}2.jpg

The default value is '-'.

mode

The mode allows you to specify which characters to use to generate the incremental value (the string after the separator)

The default value is 'numeric'.

  • 'numeric' Using the following characters: 1234567890
  • 'alpha' Using the following characters: abcdefghijklmnopqrstuvwxyz
  • 'ALPHA' Using the following characters: ABCDEFGHIJKLMNOPQRSTUVWXYZ
  • 'alphanumeric' Using the following characters: 0123456789abcdefghijklmnopqrstuvwxyz
  • 'ALPHANUMERIC' Using the following characters: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
  • 'charset' You must specify the characters you wish to use in the charset option

paddingCharacter && paddingSize

If you wish to left-pad the incremental values with a character, use this option. Here's an example :

var uniquefilename = require('uniquefilename');
options = {mode: 'alpha', paddingCharacter: '0', paddingSize: 3};
uniquefilename.get('/path/to/dir/file.jpg', options, function(filename) {
  // filename might be "/path/to/dir/file.jpg", 
  // "/path/to/dir/file-002.jpg", "/path/to/dir/file-045.jpg", etc...
  // depending on the files that exist on your filesystem
});

Using it with multer

Multer is a node.js middleware for handling multipart/form-data, which is primarily used for uploading files. The following example shows you how to use multer along with this module to move an uploaded file to a unique filename :

var multer      = require('multer');
var path      = require('path');
var uniquefilename  = require('uniquefilename');
 
router.use(multer({
  storage: multer.diskStorage({
    destination: function (req, file, cb) {
      cb(null, './public/uploads/')
    },
    filename: function (req, file, cb) {
      originalname = path.resolve('./public/uploads/' + file.originalname);
      options = {};
      uniquefilename.get(originalname, options, function(filename) {
         cb(null, path.basename(filename));
      });
    }
  })
}).single('thumbnail'));

Dependencies (1)

Dev Dependencies (4)

Package Sidebar

Install

npm i uniquefilename

Weekly Downloads

678

Version

1.1.2

License

MIT

Last publish

Collaborators

  • rundef