s3 getObject прерывается, когда размер файла превышает 100 МБ - PullRequest
0 голосов
/ 21 марта 2019

Я работаю над сервисом загрузки и выгрузки файлов с реагированием и узлом. Я размещаю файлы на Digital Ocean, который использует AWS S3. Следующий код работает как чемпион (прямо из их документации).

`// код OG app.get ("/ test-download /: id", (req, res) => { var params = { Bucket: secretBucketName, Ключ: secretKeyStuff };

s3.getObject(params, function(err, data) {
  //
  console.log(data);
  //
  if (!err) {
    res.send({ data, key: params.Key });
  } else {
  // an error occurred
    console.log({ err });
  }
 });
});`

Тем не менее, каждый раз, когда я пытаюсь загрузить ранее загруженный файл размером более 100 МБ, либо происходит сбой сервера, я получаю кучу JavaScript-памяти или какую-то другую ошибку.

Итак, я попытался выполнить потоковую передачу запроса getObject и могу выполнить его успешно. Тем не менее, я получаю странный ответ на внешний интерфейс, и я не уверен, нужно ли мне преобразовывать данные перед потоковой передачей или преобразовывать их потом ...

app.get("/test-download/:id", (req, res) => {
var params = {
  Bucket: secretBucketName,
  Key: secretKeyStuff
};

// This Streams
s3.getObject(params)
  .createReadStream()
  .pipe(res)
  .on("finish", () => {
    console.log("** done");
  });
 });

Код переднего конца ..

downloadFile = (id, name, type) => {
axios
  .get(
    `/test-download/${id}`,
    this.props.handleSnackBar("Your download has been started.")
  )
  .then(res => {
    download(
      // Stream doesn't recognize res.data.data.Body.data
     // I'm assuming b/c of the data format in which is being returned
      new Blob([new Uint8Array(res.data.data)], { type: "octet/stream" }),
      `${name}.${type}`
    );
    console.log(res.data);
  })
  .catch(err => console.log(err));

};

Ответ внешнего интерфейса с потоком узлов.

Ответ внешнего интерфейса с потоком узлов

Есть идеи, что передает этот образ? И если бы ты мог указать мне правильное направление, ты был бы величайшим. enter code here

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