首页 > 解决方案 > 如果它在另一台服务器上,如何通过 express.js 引导音频文件的流

问题描述

我有一个处理程序 express.js,它将文件的 ID 作为输入。

而且我不知道如何通过例如 axios 捕获此文件的流并将其传输到客户端部分 SPA。

感谢您的关注

router.get('/api/track/:id', async(req, res) => {
  // Create bot
  const telegram = new Telegram(token, { agent })
  const fileId = req.params.id

  let url
  try {
    // Getting filelink from telegram
    url = await telegram.getFileLink(fileId)
  } catch (error) {
    console.log('Error on getting link on file from telegram', error)
    return { message: 'Error on getting link on file from telegram', code: 4, error}
  }
  
  res.set('content-type', 'audio/mp3');
  res.set('accept-ranges', 'bytes');
  
  // And this is place i'm try download file as stream...
  try {
    const response = await axios({
      url,
      method: 'GET',
      responseType: 'stream'
    })
  
    console.log(response)
  } catch (error) {
    console.log(error)
  }
  
})

标签: node.jsexpressaxiostelegram-bot

解决方案


expressres对象是一个可写流。这意味着您可以将 axios可读响应流通过管道传输到快速可写响应流中。

const response = await axios({
  url,
  method: 'GET',
  responseType: 'stream'
})

console.log(response)
response.data.pipe(res)

推荐阅读