KER - 学习空间
首页
文章
分类 ▾
前沿科技
编程开发
人工智能
羊毛福利
运维管理
闲语杂谈
登录
用Golang搓一个Typora图片上传插件
作者:KER
发布于 2026-05-21 06:48:53
Typora
图片上传
Golang
图床
自建服务器
← 返回文章列表
# 用Golang搓一个Typora图片上传插件 最近琢磨着给Typora配个自动上传图片的方案,市面上的要么要花钱,要么得用第三方图床。干脆自己动手写了一个,服务端用Gin框架,客户端就是个命令行工具,代码逻辑是让GPT生成的,我主要负责调试和打包。 整套方案跑下来还行,粘贴上传和右键上传图片都正常。就是每次只能传一张图,多图得自己处理下。上传接口加了个简单的Token验证,防君子不防小人。 先看整体流程,其实就三步: ```mermaid graph LR A[Typora粘贴/右键上传] --> B[调用Client程序] B --> C{Server验证Token} C -- 通过 --> D[保存图片到指定目录] C -- 失败 --> E[返回错误] D --> F[返回图片访问URL] ``` ## 核心实现 ### Token验证 客户端和服务端用同一个Token做简单验证: **客户端发送请求时带上Header:** ```go token := "e583005c4b99107633bbe93a9fe59f83" req.Header.Set("Authorization", token) ``` **服务端验证逻辑:** ```go // 从请求头获取Token token := c.Request.Header.Get("Authorization") if token != "e583005c4b99107633bbe93a9fe59f83" { c.JSON(http.StatusBadRequest, gin.H{"success": false, "message": "Invalid token"}) return } ``` ### 关键配置 需要改几个地方才能跑通: | 组件 | 配置项 | 示例值 | 说明 | |------|--------|--------|------| | Client | 接口URL | `http://127.0.0.1:11258/upload` | 指向你的服务端 | | Server | MaxFileSize | `2 * 1024 * 1024` | 限制2MB | | Server | AllowedExts | `.jpg`, `.jpeg`, `.png`, `.gif` | 只接受图片格式 | | Server | UploadPath | `/www/wwwroot/images` | 图片存放目录 | | Server | HttpUrl | `http://127.0.0.1:11258/images/` | 图片访问前缀 | 服务端配置示例: ```go func loadConfig() (*Config, error) { return &Config{ MaxFileSize: 2 * 1024 * 1024, AllowedExts: []string{".jpg", ".jpeg", ".png", ".gif"}, UploadPath: "/www/wwwroot/images", HttpUrl: "http://127.0.0.1:11258/images/", }, nil } ``` ## 部署步骤 1. **打包**:两个项目分别执行`build`批处理,生成可执行文件 2. **部署Server**:把server程序丢到服务器上跑起来,建议套个nginx做反向代理 3. **配置Client**:修改client里的接口URL指向你的服务器地址 4. **Typora设置**:在Typora的图片上传配置里填上client.exe的完整路径 ## 几点说明 - Golang编译出来的二进制文件确实比较大,对比C++写的差距明显,但部署方便也算扯平了 - 只支持自建服务器,别想着直接传第三方 - Token验证是最简陋的方案,生产环境建议换成更安全的认证方式 - 如果需要多图上传,得自己扩展client逻辑 **仓库地址:** - 客户端:[keirosang/imageUpdateClient](https://github.com/keirosang/imageUpdateClient) - 服务端:[keirosang/imageUpdateServer](https://github.com/keirosang/imageUpdateServer) --- Typora, 图片上传, Golang, 图床, 自建服务器