Вопрос:

Загрузите буфер файлов с помощью обещания запроса в Amazon S3

node.js amazon-s3 request

1395 просмотра

1 ответ

6764 Репутация автора

Я использую библиотеку запроса-обещания. Я пытаюсь загрузить файл на подписанный URL-адрес Amazon S3:

var fs = require('fs')
var request = require('request-promise-native')
request({
  method: 'PUT',
  uri: 'https://MYBUCKET.amazonaws.com/myfile.pdf?AWSAccessKeyId=KEY&Expires=1489006131&Signature=SIGNATURE',
  headers: {
    'x-amz-server-side-encryption': 'AES256',
    'Content-Type': 'application/pdf'
  },
  file: fs.readFileSync('myfile.pdf')
}).then((r) => console.log('response', r)).catch((err) => console.log('err', err))

Запрос выполняется, но Amazon сообщает, что файл имеет длину 0 байт.

Является ли fileпараметр правильным аргументом?

Автор: Allyl Isocyanate Источник Размещён: 07.03.2017 09:57

Ответы (1)


3 плюса

78164 Репутация автора

Решение

Я верю что ты хочешь

body: fs.readFileSync('myfile.pdf')

вместо

file: fs.readFileSync('myfile.pdf')

Кроме того, вы можете выполнять потоковую передачу файла вместо буферизации всего файла в памяти:

body: fs.createReadStream('myfile.pdf')

Смотрите requestдокументацию для получения дополнительной информации.

Автор: mscdex Размещён: 07.03.2017 10:02
32x32