【发布时间】:2016-12-23 10:40:47
【问题描述】:
使用标准请求模块,我们可以运行以下脚本来检查文件的 MIME 类型;
var request = require('request');
var url = "http://www.somedomain.com/somepicture.jpg";
var magic = {
jpg: 'ffd8ffe0',
png: '89504e47',
gif: '47494638'
};
var options = {
method: 'GET',
url: url,
encoding: null // keeps the body as buffer
};
request(options, function (err, response, body) {
if(!err && response.statusCode == 200){
var magicNumberInBody = body.toString('hex',0,4);
if (magicNumberInBody == magic.jpg ||
magicNumberInBody == magic.png ||
magicNumberInBody == magic.gif) {
console.log("It's an image!");
return true;
}
}
});
这是不言自明的。但是,当使用 node.js 并依赖 Promises 时,我们如何执行上述操作?我尝试安装和使用request-promise,并编写了以下脚本;
return rp("http://www.somedomain.com/somepicture.jpg")
.then((response) => {
var magicNumberInBody = response.toString('hex',0,4);
console.log(magicNumberInBody);
if (magicNumberInBody == magic.jpg ||
magicNumberInBody == magic.png ||
magicNumberInBody == magic.gif) {
console.log("It's an image!");
return true;
}
但是,对于不基于 html/txt 的任何内容,request-promise 似乎只返回原始二进制文件。
有谁知道我如何将上述数据更改为有意义的数据,我可以轻松地使用它来识别 MIME 类型是否为 jpg/png/gif?
【问题讨论】:
标签: javascript node.js promise