节点.js获取文件扩展名

2022-08-30 00:09:08

我在节点中创建文件上传函数.js使用express 3。

我想抓取图像的文件扩展名。所以我可以重命名文件,然后将文件扩展名附加到它。

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

如何在node.js中获取图像的扩展?


答案 1

我相信您可以执行以下操作来获取文件名的扩展名。

var path = require('path')

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

如果要获取文件名中的所有扩展名(例如 =>),试试这个:filename.css.gzcss.gz

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

console.log(ext) // prints 'css.gz'

答案 2

更新

由于原始答案 extname() 已添加到模块中,请参阅 Snowfish 答案path

原答:

我正在使用这个函数来获取文件扩展名,因为我没有找到一种更简单的方法(但我认为有):

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

您必须需要“路径”才能使用它。

另一个不使用路径模块的方法:

function getExtension(filename) {
    var i = filename.lastIndexOf('.');
    return (i < 0) ? '' : filename.substr(i);
}