Node.js obtiene la extensión de archivo

Resuelto georgesamper asked hace 12 años • 16 respuestas

Estoy creando una función de carga de archivos en node.js con express 3.

Me gustaría obtener la extensión de archivo de la imagen. para poder cambiar el nombre del archivo y luego agregarle la extensión del archivo.

app.post('/upload', function(req, res, next) {
    var is = fs.createReadStream(req.files.upload.path),
        fileExt = '', // I want to get the extension of the image here
        os = fs.createWriteStream('public/images/users/' + req.session.adress + '.' + fileExt);
});

¿Cómo puedo obtener la extensión de la imagen en node.js?

georgesamper avatar Jun 03 '12 02:06 georgesamper
Aceptado

Creo que puedes hacer lo siguiente para obtener la extensión de un nombre de archivo.

var path = require('path')

path.extname('index.html')
// returns
'.html'

Si desea obtener todas las extensiones en un nombre de archivo (por ejemplo, filename.css.gz=> css.gz), intente esto:

const ext = 'filename.css.gz'
  .split('.')
  .filter(Boolean) // removes empty extensions (e.g. `filename...txt`)
  .slice(1)
  .join('.')

console.log(ext) // prints 'css.gz'
Snowfish avatar Apr 03 '2013 03:04 Snowfish

Actualizar

Desde la respuesta original, se agregó extname()path al módulo, consulte la respuesta de Snowfish

Respuesta original:

Estoy usando esta función para obtener una extensión de archivo, porque no encontré una manera de hacerlo de una manera más fácil (pero creo que la hay):

function getExtension(filename) {
    var ext = path.extname(filename||'').split('.');
    return ext[ext.length - 1];
}

debes requerir 'ruta' para usarlo.

Otro método que no utiliza el módulo de ruta:

function getExtension(filename) {
    var i = filename.lastIndexOf('.');
    return (i < 0) ? '' : filename.substr(i);
}
dievardump avatar Jun 02 '2012 20:06 dievardump