Never Propel Marmalade

    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'));

    Install

    npm i uniquefilename

    DownloadsWeekly Downloads

    2,639

    Version

    1.1.2

    License

    MIT

    Last publish

    Collaborators

    • rundef