Канал readStream, шифр, запрос не загружается должным образом - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь зашифровать и загрузить файл с помощью запроса PUT, когда я передаю readStream в функцию шифрования (crypto.createCipheriv), а затем в запрос, файл загружается только частично (первые 200 байтов)

Если это поможет - я загружаю в корзину S3, используя подписанный URL.

Файл полностью загружается, когда я пропускаю этап шифрования (нет readStream.pipe(cipher))

const fs = require('fs');
const crypto = require('crypto');
const request = require('request');
const FormData = require('form-data');

const key = Buffer.alloc(32);
const iv = Buffer.alloc(16);

const url = 'https://some-url-here.com';

const cipher = crypto.createCipheriv('aes-256-cbc', key, iv);
const readStream = fs.createReadStream('testfile.txt');

readStream.setEncoding('utf8');
cipher.setEncoding('utf8');

readStream.pipe(cipher)

cipher.on('data', (chunk) => {
  console.log(chunk);
});

const formData = {
  'file.jpg': cipher
}

request({
  method: 'PUT',
  url,
  formData: formData
});

В конечном счете, я хотел бы зашифровать, а затем загрузить очень большой файл, не считывая весь файл в память (используя поток)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...