使用 pkgcloud 从 Rackspace 下载获取缓冲区
Get buffer from Rackspace download using pkgcloud
这可能是不可能的,但我正在尝试 return 使用 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()
和 return 吗?
.download()
returns 一个可读流,所以它应该只是缓冲该输出的问题。例如:
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);
});
这可能是不可能的,但我正在尝试 return 使用 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()
和 return 吗?
.download()
returns 一个可读流,所以它应该只是缓冲该输出的问题。例如:
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);
});