此代码在调用 Axios 后中断。我不确定它为什么这样做。它找到 presignedURL 但在启动 Axios 后退出。它应该将 URL 拉入 Axios 参数中,但似乎没有找到它。我在网上看到过类似的代码,但我的似乎不想正常运行。任何帮助将不胜感激。
var presignedGETURL;
var keyFile = "uploadImages/helloWorld.pdf"
async function mainDownload() {
try {
presignedGETURL = await generatePresignedUrl();
alert(presignedGETURL + " this is part of main download function")
let data = await downloadFile(presignedGETURL);
alert(data + " data in downloadFile function")
let file = await writeFile(data);
console.log("file...>", file)
return "done"
} catch (err) {
console.log("err caught due to...>", err)
alert(err + " error in mainDownload")
}
}
async function generatePresignedUrl() {
try{
let bucketParams = {
Bucket: //BucketName//,
Key: keyFile
}
var s3 = new AWS.S3();
presignedGETURL = s3.getSignedUrl('getObject', bucketParams)
console.log('presigned url obtained from s3: ', presignedGETURL)
alert(presignedGETURL)
return presignedGETURL;
}catch (err){
console.log("error call during call s3".concat(err))
throw err;
}
}
async function downloadFile(presignedGETURL) {
const url = presignedGETURL
alert(url + " this is the url in download file function")
try {
alert("TRY: " + url)
const response = await axios({
url: url,
method: 'GET',
responseType: 'arraybuffer',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/pdf'
}
})
//console.log(response.data)
//alert(response.data)
alert(response)
console.log("response.data from s3 object...>", response.data)
alert(response.data + " this is the resonse in donwload file function")
return response.data;
}catch (err) {
console.log("error in axios call", err)
alert(err + " error in axios call")
throw err
}
}
async function writeFile(Data) {
const path = Path.resolve(__dirname, './files', keyFile)
return new Promise((resolve, reject) => {
fs.writeFile(path, Data, (err) => {
if(err) {
reject("File creation error: ".concat(err))
} else {
resolve("./files/".concat(keyFile))
}
})
})
}