Node.js obtiene la extensión de archivo
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?
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'
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);
}