本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

go-simple-upload-server 是一个用Golang编写的轻量级HTTP服务器,主要用途是存储文件制品。它提供简单的文件上传、下载功能,并支持基于token的认证机制,适用于个人文件存储、小型团队共享或CI/CD制品暂存等场景。
POST /upload上传文件(自动命名)、PUT /files/:path指定路径上传,以及GET /files/:path下载文件| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
-addr | string | 127.0.0.1:8080 | 服务器监听地址 |
-config | string | - | 配置文件路径(命令行参数优先级高于配置文件) |
-document_root | string | . | 文档根目录(文件存储路径) |
-enable_auth | bool | false | 是否启用认证机制 |
-enable_cors | bool | true | 是否启用CORS头 |
-file_naming_strategy | string | uuid | 文件命名策略(默认使用UUID) |
-max_upload_size | int | 1048576 (1MB) | 最大上传大小(字节) |
-read_only_tokens | value | - | 逗号分隔的只读令牌列表 |
-read_write_tokens | value | - | 逗号分隔的读写令牌列表 |
-shutdown_timeout | int | 15000 (15s) | 优雅关闭超时时间(毫秒) |
docker run -p 8080:8080 -v ./data:/data go-simple-upload-server -addr 0.0.0.0:8080 -document_root /data
docker run -p 8080:8080 -v ./data:/data go-simple-upload-server \ -addr 0.0.0.0:8080 \ -document_root /data \ -enable_auth \ -read_write_tokens "rw_token1,rw_token2" \ -read_only_tokens "ro_token1"
默认无需认证,启用认证需设置-enable_auth=true,并配置令牌:
read_only_tokens):允许执行GET(下载)、HEAD(检查文件存在)操作read_write_tokens):允许所有只读操作及POST(上传)、PUT(指定路径上传)操作认证方式:
Authorization: Bearer <TOKEN>请求头传递token=<TOKEN>查询参数传递(请求头优先级更高)认证失败响应:401 Unauthorized,响应体为{"ok": false, "error": "unauthorized"}
v2版本移除了内置TLS支持,建议通过反向代理(如Nginx)实现HTTPS。
POST /upload上传文件,服务器自动生成文件名(基于命名策略)
multipart/form-data| 名称 | 是否必填 | 类型 | 描述 | 默认值 |
|---|---|---|---|---|
file | 是 | Form Data | 文件内容 | - |
overwrite | 否 | boolean | 是否允许覆盖已有文件 | false |
201 Created,Content-Type: application/json
{"ok": true, "path": "/files/<filename>"}
409 Conflict(文件已存在且未允许覆盖)curl -F "file=@localfile.txt" http://localhost:8080/upload
PUT /files/:path上传文件并指定存储路径(忽略原始文件名)
| 名称 | 是否必填 | 类型 | 描述 | 默认值 |
|---|---|---|---|---|
:path | 是 | URL路径 | 服务器存储路径(如/docs/report.pdf) | - |
file | 是 | Form Data | 文件内容 | - |
overwrite | 否 | boolean | 是否允许覆盖已有文件 | false |
201 Created,Content-Type: application/json
{"ok": true, "path": "/files/<path>"}
409 Conflict(文件已存在且未允许覆盖)curl -X PUT -F "file=@localfile.txt" http://localhost:8080/files/docs/report.pdf
GET /files/:path下载指定路径的文件
| 名称 | 是否必填 | 类型 | 描述 |
|---|---|---|---|
path | 是 | URL路径 | 文件存储路径 |
200 OK,响应体为文件内容(Content-Type自动推断)404 Not Found(文件不存在)curl http://localhost:8080/files/docs/report.pdf -o downloaded.pdf
HEAD /files/:path检查文件是否存在(仅返回响应头,无响应体)
path(URL路径,文件存储路径)200 OK(文件存在)404 Not Found(文件不存在)curl -I http://localhost:8080/files/docs/report.pdf
OPTIONS /files/:path 和 OPTIONS /uploadCORS预检请求(无需认证,始终返回204 No Content)
OPTIONS * HTTP/1.1 格式请求OPTIONS /files/:path 仍返回 204 No Content# 运行所有测试(含端到端测试) go test ./... # 使用真实文件系统测试(需确保文档根目录为空) TEST_WITH_REAL_FS="./testdata" go test ./... # 测试远程服务器(需提前清空目标服务器文档根目录) TEST_TARGET_ADDR="localhost:8080" go test ./...
# 运行端到端测试 docker compose -f docker-compose.e2e.yml run --rm test # 测试完成后清理 docker compose -f docker-compose.e2e.yml down --rmi local --volumes
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429