【发布时间】:2012-01-18 09:51:33
【问题描述】:
我目前的方法是这样的:
var request = require('request');
var mime = require('mime');
var fs = require('fs');
var uri = 'http://www.sweetslyrics.com/images/img_gal/25646_christina-perri-213968.jpg';
request({
'method':'GET',
'uri': uri
},function(err, response,body){
var tmp_path = '/tmp/123456';
fs.writeFile(tmp_path, body, function(err) {
console.log(mime.lookup(tmp_path)); //application/octet-stream ?????
});
});
图片显然是图片,但node-mime 说它是application/octet-stream。为什么?
注意: - 我不想依赖响应标头内容类型,因为根据我的经验,有时这些响应标头设置不正确......并且它们不能确定真实的文件类型。 (这就是为什么我将它保存到一个文件中,然后让 node-mime 为我确定它!)
我想知道确定文件是否为图像的最佳方法,误差为 0。
编辑:我刚刚意识到 node-mime 不是“魔法”。它只是检查扩展名:( ...
Edit2:我发现了这个:https://github.com/SaltwaterC/mime-magic
【问题讨论】:
-
检查uri的最后三个字符有什么问题?
-
请注意,如果您要获取文件进行检查但不存储它,最好对前几 KB 使用范围请求,而不是检索整个文件。
标签: javascript http node.js mime-types content-type