2016-03-30 106 views
2

我正在嘗試處理來自iOS/Android應用程序的圖片上傳請求。在請求中,我獲取圖像的緩衝區,並希望將其上傳到Rackspace文件,而無需下載圖像以重新上傳。我可以將文件寫入文件系統並從中讀取,但我想知道是否可以使用緩衝區創建一個可讀流,以便將其傳輸到雲。從緩衝區請求上傳圖像

 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錯誤。

回答

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();