Можно ли определить длину / размер читаемого потока?

Я пытаюсь изменить размер файла в узле с помощью gm.js и использовать .stream() создать читаемый поток измененного изображения. Теперь я хочу загрузить его с помощью knox.js .putStream() но Content-Length является обязательным заголовком Можно ли определить размер читаемого потока, чтобы я мог использовать его в Content-Length заголовок?

Заранее спасибо, ребята.

1 ответ

Решение

Если ваши файлы не слишком велики, вы можете буферизовать ваш поток с помощью модуля raw-body перед загрузкой его на S3:

var rawBody = require('raw-body');
var knox = require('knox');

function putStream(stream, filepath, headers, next) {
  rawBody(stream, function(err, buffer) {
    if (err) return next(err);
    headers['Content-Length'] = buffer.length;
    knox.putBuffer(buffer, filepath, headers, next);
  });
};

Если ваши файлы очень велики, может быть лучше использовать решение mscdex с модулем knox-mpu.

Другие вопросы по тегам