使用pkgcloud从Rackspace下载中获取缓冲区

时间:2016-04-05 22:26:49

标签: node.js rackspace-cloudfiles pkgcloud

这可能是不可能的,但我试图使用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()并返回与上传缓冲区相似的内容吗?

1 个答案:

答案 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;
}