Можно ли определить длину / размер читаемого потока?
Я пытаюсь изменить размер файла в узле с помощью 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.