2

我正在尝试处理来自 iOS/Android 应用程序的图像上传请求。在请求中,我正在获取图像的缓冲区,并希望将其上传到 Rackspace 文件,而无需下载图像重新上传。我可以将文件写入文件系统并从中读取,但我想知道是否可以使用缓冲区创建 readableStream 以便将其传输到云。

        var options = {
            container: _this3._container,
            remote: filename,
            contentType: contentType
        }
        var readStream = new Readable(data);
        readStream._read();
        readStream.on('data', function() {
            console.log("Has data!");
        });

    function upload() {
        return new Promise(function (resolve, reject) {
            var writeStream = _this3._RackClient.upload(options);

            writeStream.on('success', function() {
                resolve();
            });
            writeStream.on('error', function(err) {
                if (err !== null) {
                    return reject(err);
                }
            });
            readStream.pipe(writeStream);
        });
    }
    return upload();

是我目前正在尝试的方式,但我继续遇到not implemented错误。

4

1 回答 1

0

我实际上能够使用PassThrough流来实现这一点。

var options = {
    container: _this3._container,
    remote: filename,
    contentType: contentType
};
function upload() {
    return new Promise(function (resolve, reject) {
        var writeStream = _this3._RackClient.upload(options);
        var bufferStream = new stream.PassThrough();
        bufferStream.end(new Buffer(data));
        writeStream.on('success', function(file) {
            resolve(file);
        });
        writeStream.on('error', function(err) {
            if (err !== null) {
                console.log(err);
                return reject(err);
            }
        });
        bufferStream.pipe(writeStream);
    });
}
return upload();
于 2016-03-30T22:10:41.220 回答