nodejs объект файла отправляется на aws s3 с помощью s3.upload или s3.uploadPart - PullRequest
0 голосов
/ 09 марта 2020

Я хотел бы отправить свой файл на amazon S3, который я взял со стороны клиента, как multipart / form-data.

В оригинальном do c s3.upload он ожидает тело как поток как ниже. enter image description here

А для потока мне нужно сохранить файл в файловую систему и указать путь. enter image description here

Здесь возникает вопрос. У меня есть мой файловый объект, который я взял со стороны клиента как multipart / form-data

destination:"uploads"
encoding:"7bit"
fieldname:"file"
filename:"test.zip"
mimetype:"application/zip"
originalname:"test.zip"
path:"uploads\test.zip"
size:4440

Есть ли способ отправить файл напрямую без сохранения файловой системы?

Ответы [ 2 ]

1 голос
/ 09 марта 2020

Если вы используете clean express - вам нужно прочитать файл, введенный пользователем - вы можете использовать промежуточное программное обеспечение, которое сделает это за вас. Тогда у вас будет двоичный файл Buffer, и вы можете напрямую отправить его, как в примере кода, который вы предоставили для S3.upload.

1 голос
/ 09 марта 2020

Вы не упомянули метод данных формы, который вы используете на nodejs стороне. если вы используете модуль form-data npm, вы можете преобразовать данные файла в буфер напрямую, используя form.getBuffer()

Оформить заказ ref здесь

В случае, если вы Вы используете модуль запроса для загрузки файла:

Используйте запрос-обещание npm модуль.

let rp = require('request-promise');
const fileUrl = 'http://sample.com/file';
const downloadedFile  = await rp(fileUrl);
const fileStreamData = Buffer.from(downloadedFile, 'utf-8');
// Use fileStreamData in S3 upload as Body parameter.
...