这可能是不可能的,但我试图使用pkgcloud模块在Rackspace上返回图像的缓冲区对象,而不必写入文件系统。我之前已经看过这个,但两个例子都显示了下载到文件系统。
function get() {
return new Promise(function (resolve, reject) {
_this._RackClient.download(options, function(err, results) {
if (err !== null) {
return reject(err);
console.log("Errow Downloading:", err);
}
resolve(buffer);
});
});
}
return get();
理想情况下,我希望它如何工作,但目前请求中没有正文。我可以使用stream.passThrough()
并返回与上传缓冲区相似的内容吗?
答案 0 :(得分:1)
var stream = _this._RackClient.download(options);
var buf = [];
var nb = 0;
var hadErr = false;
stream.on('data', function(chunk) {
buf.push(chunk);
nb += chunk.length;
}).on('end', function() {
if (hadErr)
return;
switch (buf.length) {
case 0:
return resolve(new Buffer(0));
case 1:
return resolve(buf[0]);
default:
return resolve(Buffer.concat(buf, nb));
}
}).on('error', function(err) {
hadErr = true;
reject(err);
});
返回一个可读流,所以它应该只是缓冲输出。例如:
class A {};
class B : public A{};
class C : public A{};
int main(int argc,char** args)
{
B b;
A& a = b;
C c;
a = c;
}