view函数里添加mime类型

xjxchris

问题描述

在webman的 view函数里添加mime类型

return new Response(200, ['Content-Type' => 'application/wasm'], $handler::render($template, $vars, $app, $plugin));

我要的是他解析wasm这个类型文件,结果就是他变成了页面下载成了wasm文件,请教该怎么添加

我的需求是页面需要加载一个js播放器,播放器是有个wasm类型文件,如果用apache或者nginx,只需要在mime.types文件里添加
application/wasm wasm
即可,但webman 我不知道去哪里添加这个类型,之前看类似提问说是改Response这里,但好像不是我要的效果,哪位大神教一教

不支持wasm的浏览器报错如下图

451 4 1
4个回答

latin

view是视图,返回html页面用的,返回文件用file()

return response()->file('具体的文件位置.wasm')->header('Content-Type', 'application/wasm');

文档 https://www.workerman.net/doc/webman/response.html#%E8%BF%94%E5%9B%9E%E6%96%87%E4%BB%B6%E6%B5%81

  • xjxchris 2024-04-19

    这个好像不是我要实现的效果,确切的来说,我这个是需要webman http解析部分支持者个wasm格式的文件,而不是把他下载下来

nitron

wasm不是在JSL里加载么?

  • xjxchris 2024-04-19

    对就是这个意思,可能我没表达清楚,我是在html引入js,然后js会自动引入另一个wasm,然后就出上面的报错了,不知道要怎么弄了

  • xjxchris 2024-04-19

    因为用了webman做Http服务,所以相当于页面加载有webman处理了,但不知道怎么加这个mime类型

  • nitron 2024-04-19

    那你加content-type干嘛,浏览器会自动识别

  • xjxchris 2024-04-19

    不行得,wasm 浏览器会报那个错误,如果是nginx或者apache ,我就加在mime.types文件里就可以正常识别了,但webman不知道怎么加

nitron

临时解决方案,修改
vendor/workerman/workerman/Protocols/Http/mime.types
加上一行

application/wasm wasm;

我没试过,还不清楚是否管用,只是看了代码

  • xjxchris 2024-04-19

    这个位置看起来是对的,但是我加了,好像没效果,重新加载了一次也一样,但看起来确实是这个位置

  • nitron 2024-04-19

    restart 不要reload

  • xjxchris 2024-04-19

    可以了,强制刷新了一下好了,太感谢你了,大赞

nitron

@walkor 发了个PR,你看下是否合适

×
🔝