node.js - 如果它在另一台服务器上,如何通过 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)
}
})
解决方案
expressres
对象是一个可写流。这意味着您可以将 axios可读响应流通过管道传输到快速可写响应流中。
const response = await axios({
url,
method: 'GET',
responseType: 'stream'
})
console.log(response)
response.data.pipe(res)
推荐阅读
- css - 在标签内垂直对齐文本的问题
- python - ValueError:无法导入“hostingstart.app”
- javascript - shadow DOM 和 light DOM 中应该包含哪些部分?
- ios - 禁用与 segue 的文本字段交互
- laravel - Laravel - 在页面上显示具有相同值/数字的值
- java - 枚举的通用过滤器
- javascript - JS Chrome 插件 - 查找位于当前活动选项卡中的文本
- google-sheets - 在 Google 表格中过滤和比较数据
- javascript - React Router:使用 setState 更新的状态变量未正确传递给 Route
- ganymede - Ganymed SSH2 JAVA,提示:找不到命令