Node.js的 - 文件系统得到的文件类型,周围2012年解决方案(Node.js - File

2019-06-24 03:49发布

我需要的node.js的帮助下设置内容类型得到一个文件的文件类型。 我知道我可以很容易地检查文件的扩展名,但我也得到了一个没有扩展名的文件应有的内容类型image/pngtext/html麻生太郎。

这是我的代码(我知道这并没有太大的意义,但是这就是我需要的基础):

var http = require("http"),
    fs = require("fs");
http.createServer(function(req, res) {
    var data = "";
    try {
        /*
         * Do not use this code!
         * It's not async and it has a security issue.
         * The code style is also bad.
         */
        data = fs.readFileSync("/home/path/to/folder" + req.url);
        var type = "???"; // how to get the file type??
        res.writeHead(200, {"Content-Type": type});
    } catch(e) {
        data = "404 Not Found";
        res.writeHead(404, {"Content-Type": "text/plain"});
    }
    res.write(data);
    res.end();
}).listen(7000);

我还没有找到一个函数的API ,所以我会很高兴,如果谁能告诉我该怎么做。

Answer 1:

看一看在mmmagic模块 。 这是一个libmagic结合,似乎做的正是你想要的。



Answer 2:

有用于查找MIME类型的辅助库https://github.com/broofa/node-mime

var mime = require('mime');

mime.lookup('/path/to/file.txt');         // => 'text/plain'

但它仍然采用了扩展查找虽然



Answer 3:

你应该看看在命令行工具file (Linux)的。 它试图猜测基础上的第一对夫妇的文件的字节的文件类型。 您可以使用child_process.spawn从节点内运行。



Answer 4:

你想查找MIME类型,幸运的节点有一个方便的图书馆只是说:

https://github.com/bentomas/node-mime#readme

编辑:

你或许应该寻找到一个静态资产的服务器和不设置任何这方面的东西你自己。 您可以使用快件要做到这一点真的很容易,还是有一大堆的静态文件的模块,如欣喜若狂 。 在另一方面,你应该使用nginx的反正为静态文件。



Answer 5:

2018解决方案

接受的答案似乎有一个Python的依赖和其他的答案要么是外的日期或设定文件名有某种延伸。

请找我的多了最新的答案在这里



Answer 6:

我用这个:

npm install mime-types

而且,里面的代码:

var mime = require('mime-types');
tmpImg.contentType = mime.lookup(fileImageTmp);

其中fileImageTmp是存储在文件系统上的图像的复制(在这种情况下,TMP)。

我可以看到的结果是: 图像/ JPEG



文章来源: Node.js - File System get file type, solution around year 2012