使用 Axios 从 Amazon S3 下载文件的问题

时间:2021-07-12 17:25:04

标签: javascript amazon-s3 axios

此代码在调用 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))
      }
    })
  })
}

0 个答案:

没有答案