gpt4 book ai didi

node.js - 如何将字符串转换为二进制缓冲区?

转载 作者:搜寻专家 更新时间:2023-11-01 00:45:02 26 4
gpt4 key购买 nike

我有两段代码:

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

data = fs.readFileSync('/Users/myaccount/Desktop/test.png');
magic.detect(data,function(err,mime){
console.log(mime); // prints 'image/png'
}

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

request.get('https://www.google.pl/images/srpr/logo11w.png',function(err,res,data){
data = new Buffer(data); // tried also new Buffer(data,'binary');
magic.detect(data,function(err,mime){
console.log(mime); // prints 'application/octet-stream'
}
})

因此,第一个检查本地磁盘中的 mime 文件类型及其“image/png”。第二个从 url 下载图像(其 png 格式的 google Logo )并检查其 mime 类型,它是“application/octet-stream”。

我如何将来自 request 的响应(它是一个字符串)转换为二进制缓冲区以便 mime 检测将返回“image/png”??

最佳答案

您必须传入选项 encoding: null

var mmmagic = require('mmmagic')
, request = require('request')
, magic = new mmmagic.Magic(mmmagic.MAGIC_MIME_TYPE)
, image = 'https://www.google.pl/images/srpr/logo11w.png';

request({
uri: image,
encoding: null
}, function(err, res, data) {

console.log(typeof data);
console.log(data.constructor);

magic.detect(data, function(err,mime) {
console.log(mime); // prints 'image/png'
});
});

我注意到 data使用 request.get(<urlString>) 时是一个字符串.出于调试目的,我使用了 typeof <something> & <something>.constructor确定什么<something>真的是。

文档有点误导

encoding - Encoding to be used on setEncoding of response data. If null, the body is returned as a Buffer.

让人觉得默认是一个缓冲区!

关于node.js - 如何将字符串转换为二进制缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21437117/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com