首页 > 解决方案 > 从 AWS S3 下载文件如何正确使用 JS

问题描述

我尝试从 AWS S3 下载文件,该文件下载成功,但它没有保存在我的磁盘中,并且我没有收到任何错误。

<script>
import AWS from 'aws-sdk';
import FS from 'browserify-fs';

export default {
  computed: {
    s3Client() {
      // Enter copied or downloaded access ID and secret key here
      const ID = 'RANDOM_ID';
      const SECRET = 'RANDOM_SECRET';

      return new AWS.S3({
        accessKeyId: ID,
        secretAccessKey: SECRET
      })
    }
  },
  methods: {
    downloadFile() {
      const BUCKET_NAME = 'js-bucket'
      const FILE_NAME = 'test.epub'

      const params = {
        Key: FILE_NAME,
        Bucket: BUCKET_NAME
      }

      console.info("Try to download file : " + FILE_NAME + " from bucket: " + BUCKET_NAME)

      this.isDownloading = true

      this.s3Client.getObject(params)
      .promise()
      .then(data => {

        FS.writeFile(FILE_NAME, data.Body, function (err) {
          if (err) {
            console.log(err.code, "-", err.message);
          }
        })

        console.log('File downloaded successfully')
      })
      .catch(err => console.error(err))
    }
  }
}

</script>

在控制台中,我看到有关成功保存的消息:文件已成功下载。但这是不对的。

标签: javascriptamazon-web-servicesamazon-s3

解决方案


我自己决定的:

  .promise()
  .then(data => {
    const blob = new Blob([data])
    const link = document.createElement('a')
    link.href = URL.createObjectURL(blob)
    link.download = FILE_NAME
    link.click()
    URL.revokeObjectURL(link.href)

    console.log('File downloaded successfully')
  })

它有效,但如果有人知道如何做得更好,请回答。


推荐阅读