如何查找没有扩展名的图像的MIME类型?

时间:2016-08-18 13:24:27

标签: node.js image mime

我正在使用Node.js服务器,并且将图像保存到没有文件扩展名的服务器上(图像名称只是一个数字)有没有办法找出这种图像的MIME类型?我需要它,因为浏览器正在下载图像,而不是在浏览器中打开它。

我正在使用gm(GraphicsMagick)包将文本写入图像并将其保存到没有扩展名的文件夹中。当我通过res.sendFile('project root/uploads/cache/1')发送此路径时,浏览器无法理解其图像并下载它,我希望它在同一个标​​签中打开它

我也试过设置image/*,浏览器只是下载图片,我不确定这种API是否可以在React-Native应用程序上使用而没有问题。

2 个答案:

答案 0 :(得分:1)

假设您使用multer作为上传中间件的文件:

Router.js

multer  = require('multer'),

storage = multer.diskStorage({
    // Configuring multer to upload towards the public/uploads map
    destination: function(req, file, cb) {
        cb(null, 'public/uploads')
    },
    // Rename the file, so we can create a reference to save in the database.
    filename: function(req, file, cb) {
        var ext = file.originalname.split('.')
        cb(null, 'upload-' + Date.now() + '.' + ext[ext.length - 1])
  }

})  

// Assign the configured storage to the upload.
upload = multer({ 
    storage: storage,
})

我配置我的存储将所有图像(默认情况下为multer)重命名为upload - Date.now()和ext数组中的扩展名。这样,文件将使用扩展名保存,并自动提供以下结果:

Example how it looks when uploaded

答案 1 :(得分:1)

已经在库中为您完成的一种方法(我不会在Node中花费太多时间):为扩展创建文件签名映射,并使用上传的前几个十六进制数字进行查询文件。

文件签名的良好来源(a.k.a“神奇数字”)及其扩展: https://en.wikipedia.org/wiki/List_of_file_signatures