Node.js 获取文件扩展名

新手上路,请多包涵

我使用 express 3 在 node.js 中创建文件上传功能。

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

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 中获取图像的扩展名?

原文由 georgesamper 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

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

 var path = require('path')

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

如果您想获取文件名中的所有扩展名(例如 filename.css.gz => css.gz ),请尝试以下操作:

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

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

原文由 Snowfish 发布,翻译遵循 CC BY-SA 4.0 许可协议

更新

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

原答案:

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

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

原文由 dievardump 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏