Node.js 将文件从S3下载到本地计算机

Node.js 将文件从S3下载到本地计算机,node.js,amazon-s3,download,stream,Node.js,Amazon S3,Download,Stream,我正在尝试将音频MP3文件从AWS S3下载到本地计算机。当我在本地主机上执行时,它工作正常,但在AWS上部署相同的代码之后。它将文件下载到服务器机器而不是用户的本地机器 我试过这两个版本。两者的做法是一样的 第1版: 第2版: 谢谢, Kanth与其获取文件并再次发送到客户端,不如获取文件的url并重定向客户端 比如: s3Client.getResourceUrl(key, function(err, resourceUrl) { res.redirect(resourceUrl);

我正在尝试将音频MP3文件从AWS S3下载到本地计算机。当我在本地主机上执行时,它工作正常,但在AWS上部署相同的代码之后。它将文件下载到服务器机器而不是用户的本地机器

我试过这两个版本。两者的做法是一样的

第1版: 第2版: 谢谢,
Kanth

与其获取文件并再次发送到客户端,不如获取文件的url并重定向客户端

比如:

s3Client.getResourceUrl(key, function(err, resourceUrl) {
  res.redirect(resourceUrl); 
)};

您需要将其发送给用户。因此,我认为您有一个expressJS,用户可以使用您的API端点获取元素

在您完成了所有问题之后,您需要将其发送给用户

res.sendFile('/path/to/downloaded/s3/object')

谢谢你们两位@Rashomon和@Martin do santos。 我必须添加客户端脚本来读取响应流并按以下方式下载文件

downloadTrack(track).then((result) =>{
      //var convertedBuffer = new Uint8Array(result.data);
      const url = window.URL.createObjectURL(new Blob([result.data],{type: 'audio/mpeg'}));
      const link = document.createElement('a');
      link.href = url;
      link.setAttribute('download', track.formatted_title + '.mp3');
      document.body.appendChild(link);
      link.click();
  }, (error) =>{

  console.error(error);
})
res.sendFile('/path/to/downloaded/s3/object')
downloadTrack(track).then((result) =>{
      //var convertedBuffer = new Uint8Array(result.data);
      const url = window.URL.createObjectURL(new Blob([result.data],{type: 'audio/mpeg'}));
      const link = document.createElement('a');
      link.href = url;
      link.setAttribute('download', track.formatted_title + '.mp3');
      document.body.appendChild(link);
      link.click();
  }, (error) =>{

  console.error(error);
})