如何使用JS从AWS S3正确下载文件



我尝试从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>

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

我自己决定:

.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')
})

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

最新更新