在Node.js中获取没有扩展名的文件的MIME类型

时间:2014-08-05 07:01:41

标签: javascript node.js mime-types

鉴于我有一个没有附加扩展名的文件,例如:images/cat_photo

Node.js中是否有方法提取给定文件的MIME类型?在这种情况下,模块mime不起作用。

3 个答案:

答案 0 :(得分:3)

是的,有一个名为mmmagic的模块。它最好通过分析文件的内容来猜测文件的MIME。

代码将如下所示(取自example):

var mmm = require('mmmagic'),
var magic = new mmm.Magic(mmm.MAGIC_MIME_TYPE);

magic.detectFile('node_modules/mmmagic/build/Release/magic.node', function(err, result) {
    if (err) throw err;
    console.log(result);
});

但请记住,猜测MIME类型可能并不总能导致正确答案。

随时阅读wiki page上的类型签名。

答案 1 :(得分:0)

另一种可能性是使用exec或execSync函数在Linux SO上运行“文件”命令:

// webpack.config.js
module.exports = {
    // ...the rest of your config

    resolve: {
        alias: {
            'react-native$': 'react-native-web'
        }
    }
}

但是,并不是更好的解决方案,因为它仅适用于Linux。要在Windows中运行此程序,请查看以下超级用户问题: https://superuser.com/questions/272338/what-is-the-equivalent-to-the-linux-file-command-for-windows

问候。

答案 2 :(得分:-1)

您可以简单地使用String.prototype.split(),然后使用数组的最后一个元素作为类型。

您可以使用pop方法获取数组中的最后一个元素:

const mimeType = fileName.split('.').pop()

const type = mimeType.split('/')

然后type[1]将具有扩展名