Wails 静态文件服务器实现
2025-11-09 18:45:01
wails 是基于 Golang 的跨平台开发工具,类似 Electron,但打通了 js 和 Golang 的互调。
wails 官网:https://wails.io/zh-Hans/ 如何安装以及使用请参考官网,本文主要记录如何上传文件以及读取上传的文件。
官方给出的例子为:https://wails.io/zh-Hans/docs/guides/dynamic-assets 但明确提到 vite 5.0.0+ 不受支持
Github 上也有相关的讨论:https://github.com/wailsapp/wails/issues/3240
不同于官方,我的实现是,基于 Middleware,举个例子:
| |
这里,所有的请求都会经过 files.MyHandler,该实现如下:
| |
核心功能为:如果是 options 请求,则返回跨域相关的 header,避免跨域。若为 /files/upload 或 /files/static/ 则使用自己的 handler 处理,否则让 NextHandler 来处理。
uploadHandler 实现如下:
| |
getHandler 实现如下:
| |
总结下,核心是实现一个 MyHandler,如果请求的路径能被处理,则处理并返回,不能处理时才使用 NextHandler 来处理。
除了新增 MyHandler 外,还需修改 App 的配置,添加 Middleware 的配置。
最后更新于