如果我通过express传送mp3文件.js服务器如下:

createReadStream('media/mp3file.mp3').pipe(res)

它发送音频数据,但我无法搜索.它只是快速暂停音频,将搜索栏移回当前时间,然后恢复音频.

这是一个GIF:

1

我该怎么做才能向前和向后寻找呢?

推荐答案

来自服务器的流文件数据不允许搜索,因为这是来自服务器上下文的一次性操作.

要启用搜索,服务器需要允许HTTP range requests,其中客户端告诉它希望接收下载的一部分(从字节X开始,到字节Y结束,即"范围"部分).

Express在使用res.sendFile()发送文件数据时支持此类请求.

如果要使用音频播放器呈现网页,需要添加(至少)两个处理程序:一个用于HTML文件,另一个用于音频文件.如果您只是使用普通的纯HTML文件,那么可以使用express.static() middleware,它指向包含HTML文件的目录.

Node.js相关问答推荐

Twilio-获取呼叫录音不起作用的请求

findoneandupdate()方法更新数据库,但其响应在请求中返回为null

在 Nest 项目上运行 Jest 测试时,我的文件无法找到一个在测试之外没有任何问题的模块

在父模式中设置默认值.

无法通过 NextJS 访问 HTTP 帖子中的正文

如何解决未调用 Express 错误处理程序的问题

TypeError:在使用 Jest、Supertest、Express、Typescript 进行测试时无法读取未定义的属性(读取listen)

为什么 FastAPI 需要 Web 服务器(即 Nginx)而不是 Express API?

访问 Mongoose 查询之外的变量

WSL2 上需要脚本运行的 NPM 包的权限被拒绝

如何在拦截器中发送不同的请求?

无法更新MongoDB中的文档:";伯森场';writeConcern.w';是错误的类型';数组'&引用;

socket.io 发出回调合适吗?

Node.js 中空函数的简写

使用 MongoDB 更新嵌套数组

create-react-app,安装错误(找不到命令)

为什么 Node 控制台不显示功能代码?

按日期时间字段获取最新的 MongoDB 记录

node.js 找不到模块mongodb

Npm postinstall 仅用于开发