首页 > 解决方案 > 通过外部链接下载 Node.js 服务器文件

问题描述

我正在尝试 node.js 服务器(Express.js)通过外部链接下载文件。但是当文件没有完全下载时,连接会关闭。所以文件大小为0byte。

// Express.js route

axios({
  method: 'GET',
  url: `externalLink`,
  responseType: 'stream',
  headers: {
    'Content-Type': 'application/octet-stream',
  },
})
  .then(function(response) {
     res.writeHead(200, {
       'Content-Type': EXCEL_MIME_TYPE,
       'Content-disposition': 'attachment;filename=' + response.headers['content-disposition'],
       'Content-Length': response.data.length,
     })

     res.end(Buffer.from(response.data, 'binary'))
  })

结果是 0kb 的 excel 文件。当 console.log on then 阻塞时,内容长度为 0。

但是如果我通过浏览器下载文件,则文件下载成功。在 Chrome 检查中,文件的 Transfer-Encoding: 分块。

我认为在将完整字节传输到 node.js 服务器之前连接已关闭。如何通过 node.js 服务器传输外部链接文件?

谢谢你。

标签: node.jsexpressfile

解决方案


推荐阅读