2016-03-30 3 views
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 ошибки.

ответ

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

 Смежные вопросы

  • Нет связанных вопросов^_^