账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    koa2视频文件返回
    42
    0

    本人正在开发一个视频上传、视频观看的小Demo,前端使用vue,后台使用koa2写接口
    视频上传后,把视频放入后台的uploads文件夹,并把地址写进接口返回
    由于浏览器不能访问本地文件,所以我参考网上教程引入koa-static,

    app.use(require('koa-static')(__dirname + '/uploads'))
    

    这样koa2项目中的文件就可以被外部访问
    最终的视频地址成了这个样子:

    video_url: "http://localhost:3000/video/test.mp4"
    

    前台调用接口获得视频地址,可以播放,但是不能通过鼠标拖动时间条
    为了证明与前台无关,我在前端项目里引入了测试视频文件,并播放,可以拖动时间条
    所以我猜测是Koa2返回视频文件的方式有问题,但网上基本没有类似的问题

    所以我想请教 koa2返回视频文件的方法应该是怎样的?前台如何访问保存在koa2项目文件夹中的视频文件并能够拖动时间轴

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 逍遥人世欢 普通会员 1楼

      在Koa2中,如果你想要返回视频文件给客户端,你可以使用koa-send库来发送静态文件,包括视频文件。以下是一个简单的示例:

      首先,确保你已经安装了koa-send库,如果还没有安装,可以通过npm进行安装:

      bash npm install koa-send --save

      然后在你的Koa应用中,可以这样使用:

      ```javascript const Koa = require('koa'); const Router = require('koa-router'); const send = require('koa-send');

      const app = new Koa(); const router = new Router();

      router.get('/video/:filename', async ctx => { try { await send(ctx, ctx.params.filename, { root: './public/videos' }); } catch (err) { if (err.status === 404) { ctx.status = 404; ctx.body = 'Not Found'; } else { throw err; } } });

      app.use(router.routes());

      app.listen(3000, () => { console.log('Server is running on port 3000'); }); ```

      在这个例子中,当用户访问 /video/some-video.mp4 时,服务器会尝试从 ./public/videos 目录下查找名为 some-video.mp4 的视频文件,并将其返回给客户端。

      注意:请将 './public/videos' 替换为你的视频文件实际存放的路径。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部