我做了一个局域网传文件的小工具,记录一下

我做了一个局域网传文件的小工具,记录一下

起因

上周在公司开会,需要把一个 80MB 的设计稿发给同事。用微信传?文件太大。用QQ?不想登录。用U盘?太麻烦了。用网盘?上传下载太慢。

我就在想,明明大家都在同一个局域网里,为什么传个文件这么麻烦?

尝试

周末闲着没事,就想着自己写一个。本来想用 Python 快速搞定,后来想了想,不如趁这个机会学学 Rust。

之前一直听说 Rust 性能好、内存安全,但一直没找到合适的项目练手。这次正好。

过程

花了大概两天时间,磕磕绊绊地写出来了。中间遇到不少问题:

WebSocket 的坑

一开始用 HTTP 轮询,发现延迟太高,用户体验不好。后来改成 WebSocket,实时性好多了。但 WebSocket 的状态管理挺麻烦的,尤其是多用户连接的时候。

文件上传的问题

Multipart 解析大文件时会报错,查了半天才发现是默认大小限制的问题。加上 DefaultBodyLimit 就好了。

静态资源的打包

打包后发现找不到 HTML 文件,原来需要把静态文件嵌入到二进制里。用了 rust-embed 这个库,一行代码搞定。

成品

最终效果还行:

  • 一条命令启动:cargo run
  • 打开浏览器就能用
  • 支持文字聊天、传图片、传文件
  • 内存占用不到 50MB

实际使用

周一带到公司试了试,同事们反馈还不错:

"这个挺方便的,比传U盘快多了。"

"不用装什么软件,浏览器打开就行。"

"能不能加个拖拽上传?"

(拖拽上传在计划中了)

一些想法

其实这种小工具网上有很多,但大多需要安装客户端,或者有广告,或者要注册账号。我只是想要一个最简单的东西:打开就能用,用完就关。

Rust 写起来确实比 Python 麻烦一些,编译时间也长,但运行起来是真的快。而且编译通过后基本不会有运行时错误,这点很爽。

源码

代码已经开源了,感兴趣的可以看看:

https://github.com/Sunrisies/lan-share

欢迎提 issue 和 PR。

后续计划

根据同事们的反馈,打算加几个功能:

  • 用户昵称设置
  • 消息撤回
  • 拖拽上传
  • 深色模式

有空就慢慢加吧。


写于 2026 年 3 月,一个普通的周末

相关推荐
可乐鸡翅yeah_2 小时前
FFmpeg 生成 HLS 独立分片 independent‑segments 参数到底有什么用
javascript·ffmpeg·音视频·safari·m3u8
福兮说2 小时前
canvas 旋转图片的六个坑:四角被裁、Math.ceil 多出 1px 黑边、JPG 角发黑、翻转方向反了
前端·javascript·图像处理·canvas
Ai-_Man3 小时前
您您这可以把Grok的多个会话比如说。左侧的多个会话一次性导出吗?不是单条会话里面的多次会对话。AI导出鸭
javascript·人工智能·ai·小程序·电脑
liangshanbo12154 小时前
JavaScript 异步核心主线
javascript·事件循环·异步操作
传人once5 小时前
悬停旋转放大和位移效果如何写
javascript·css·动画
geovindu5 小时前
rust: Abstract Factory pattern
开发语言·后端·设计模式·rust·抽象工厂模式
默_笙6 小时前
🍔 中间件不只是打日志:四个钩子、一次短路,和自带的工具
前端·javascript
Dovis(誓平步青云)7 小时前
家里设备越来越多,如何用一张空间地图控制灯光和温度![
android·java·前端·javascript·人工智能·电脑
xieter7 小时前
【技术精选】TypeScript 高级类型体操:条件类型与模板字面量深度剖析 (2026-10-06)
javascript
ss2738 小时前
AI全栈实战 | 3.3-02 Python 并发:有 GIL 为什么还用多线程,asyncio 和 JS 事件循环同源不同味
开发语言·javascript·python