На самом деле Скачать файл из S3 Bucket на локальную машину - PullRequest
0 голосов
/ 09 марта 2020

Я пытаюсь получить файл s3 из моего контейнера, используя следующую функцию:

async Export()
 {
   const myKey = '...key...'
   const mySecret = '...secret...'
  AWS.config.update(
    {
      accessKeyId: myKey,
      secretAccessKey: mySecret
    }
  );

  var s3 = new AWS.S3();

  s3.getObject({
    Bucket: '...bucket...',
    Key: '...filepath...'
  },
  function(error, data)
  {
    if (error != null)
    {
      alert("Failed to retrieve object: " + error)
    }
    else {
      alert("Loaded " + data.ContentLength + " bytes")
    }
  })
 }

и сообщение о том, что я загрузил файл с некоторым количеством байтов. Тем не менее, главная цель - загрузить файл на мой локальный компьютер. Нужно ли мне, чтобы здесь был какой-то поток файлов или что-то в этом роде?

Примечания

Использование angular машинописи не angular js

1 Ответ

0 голосов
/ 09 марта 2020

Да, вы получаете файл в виде потока. Вместо того, чтобы сохранить файл в виде потока, вы можете получить подписанный URL-адрес s3 и загрузить файл из этого потока, создав ссылку привязки и нажав ее динамически. Ниже приведенный код может вам помочь.

const AWS = require('aws-sdk')
const s3 = new AWS.S3()
AWS.config.update({accessKeyId: 'your access key', secretAccessKey: 'you secret key'})

const myBucket = 'bucket-name'
const myKey = 'path/to/your/key/file.extension'
const signedUrlExpireSeconds = 60 * 5 // your expiry time in seconds.

const url = s3.getSignedUrl('getObject', {
  Bucket: myBucket,
  Key: myKey,
  Expires: signedUrlExpireSeconds
})

Используйте этот URL в интерфейсе для запуска загрузки:

function download(url){
  $('<iframe>', { id:'idown', src:url }).hide().appendTo('body').click();
}
$("#downloadButton").click(function(){
  $.ajax({
    url: 'example.com/your_end_point',
    success: function(url){
      download(url);
    }
  })
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...