我正在使用 npm 的请求包将文件缓冲区发布到使用 meteor.js restivus 包编写的 REST api。我发布到 api 的 node.js 客户端代码如下:
url = ' http://localhost:3000/api/v1/images/ ';
fs.readFile('./Statement.odt', function read(err, data) {
if (err) {
throw err;
}
console.log(data); //At this stage the file is still a buffer - which is correct
var file = data;
request.post({
uri: url,
headers: {
'X-User-Id': userId,
'X-Auth-Token': authToken
},
form: {
file: file, //Inside the request.post the file is converted to binary encoding
name:"Statement.odt"
}
}, function(err, httpResponse, body) {
if (err) {
return console.error('post failed:', err);
}
console.log('Get successful! Server responded with:', body);
});
});
这里的问题/问题是在 request.post 中,文件被转换为二进制编码的 blob。请参阅上面代码中“request.post”第一个参数的“form:”属性中的注释。这在我的meteor.js 服务器上成为一个问题,其中文件需要作为缓冲区而不是二进制编码文件。(信息:我正在使用 Ostr-io/files 的 GridFS 来存储文件 - 它要求文件是缓冲区)
如果除了将文件作为编码字符串传递之外别无他法,那么有没有办法将该编码的 blob 转换回我正在使用/谈论 meteor.js 的缓冲区服务器端?请帮忙!
如果您需要更多信息,请告诉我,我会提供。