轻量级云文件系统simple-file-server,电脑秒变存储服务器

Simple File Server

一个简单的文件服务器,使用 Go 和 Gin 框架构建,支持文件上传、下载和静态文件服务。

功能特性

  • 文件上传:支持普通文件上传和分片上传(multipart upload)

  • 文件下载:通过 HTTP GET 请求下载文件

  • 静态文件服务:自动服务数据目录中的文件

  • API 认证:上传操作需要 admin-api-token 认证

  • 跨平台支持:支持 Linux 和 macOS 的 amd64 和 arm64 架构

安装

从源码构建

确保你已经安装了 Go 1.22 或更高版本。

复制代码
git clone <repository-url>cd simple-file-server
make

构建完成后,二进制文件将在 build/ 目录中生成。

使用 Docker 构建

确保你已经安装了 Docker。

复制代码
docker build -t simple-file-server .
docker run -p 60088:60088 --rm \
      -v $(pwd)/data-docker:/data:rw \
      -v $(pwd)/config.json:/config.json simple-file-server

下载预编译二进制文件

从 release 页面下载适合你平台的二进制文件。

配置

服务器通过 config.json 文件进行配置:

复制代码
{    "debug": false,    "port": 60088,    "apiToken": "your-admin-api-token",    "tempDir": "./temp",    "dataDir": "./data"}
  • debug: 是否启用调试模式

  • port: 服务器监听端口

  • apiToken: 管理员 API 令牌,用于上传操作

  • tempDir: 临时文件目录

  • dataDir: 数据文件存储目录

运行

使用二进制文件

复制代码
./simple-file-server

使用 Docker

复制代码
docker run -p 60088:60088 -v $(pwd)/data:/root/data -v $(pwd)/temp:/root/temp simple-file-server

服务器将在配置的端口上启动,并开始监听请求。

API 文档

Ping

检查服务器状态。

  • URL: /_admin/ping

  • Method: GET

  • Response: {"code": 0, "msg": "ok", "data": "ok"}

文件上传

上传单个文件。

  • URL: /_admin/upload

  • Method: POST

  • Headers:

    • admin-api-token: 管理员令牌
  • Form Data:

    • file: 要上传的文件

    • filePath: 文件保存路径(必需)

  • Response: {"code": 0, "msg": "ok", "data": {"filePath": "path/to/file"}}

分片上传初始化

初始化分片上传。

  • URL: /_admin/upload/multipart_init

  • Method: POST

  • Headers:

    • admin-api-token: 管理员令牌

    • Content-Type: application/json

  • Body:

    复制代码
    {  "filePath": "example.txt",  "totalParts": 10,  "totalSize": 10485760}
  • Response: {"code": 0, "msg": "ok", "data": {"uploadId": "123456789"}}

分片上传

上传文件的一个分片。

  • URL: /_admin/upload/multipart_upload

  • Method: POST

  • Headers:

    • admin-api-token: 管理员令牌
  • Form Data:

    • uploadId: 上传 ID

    • partNumber: 分片编号

    • file: 分片文件

  • Response: {"code": 0, "msg": "ok", "data": "ok"}

分片上传完成

完成分片上传并合并文件。

  • URL: /_admin/upload/multipart_end

  • Method: POST

  • Headers:

    • admin-api-token: 管理员令牌

    • Content-Type: application/json

  • Body:

    复制代码
    {  "uploadId": "123456789"}
  • Response: {"code": 0, "msg": "ok", "data": {"filePath": "example.txt"}}

分片上传中止

中止分片上传并清理临时文件。

  • URL: /_admin/upload/abort

  • Method: POST

  • Headers:

    • admin-api-token: 管理员令牌

    • Content-Type: application/json

  • Body:

    复制代码
    {  "uploadId": "123456789"}
  • Response: {"code": 0, "msg": "ok", "data": "ok"}

检查文件是否存在

检查指定文件是否存在。

  • URL: /_admin/has

  • Method: POST

  • Headers:

    • admin-api-token: 管理员令牌

    • Content-Type: application/json

  • Body:

    复制代码
    {  "path": "path/to/file.txt"}
  • Response: {"code": 0, "msg": "ok", "data": true}{"code": 0, "msg": "ok", "data": false}

获取文件大小

获取指定文件的大小。

  • URL: /_admin/size

  • Method: POST

  • Headers:

    • admin-api-token: 管理员令牌

    • Content-Type: application/json

  • Body:

    复制代码
    {  "path": "path/to/file.txt"}
  • Response: {"code": 0, "msg": "ok", "data": {"size": 12345}} (文件大小字节数)

获取文件内容

获取指定文件的内容。

  • URL: /_admin/get

  • Method: POST

  • Headers:

    • admin-api-token: 管理员令牌

    • Content-Type: application/json

  • Body:

    复制代码
    {  "path": "path/to/file.txt"}
  • Response: 二进制数据

移动文件

移动文件到新位置。

  • URL: /_admin/move

  • Method: POST

  • Headers:

    • admin-api-token: 管理员令牌

    • Content-Type: application/json

  • Body:

    复制代码
    {  "from": "old/path/file.txt",  "to": "new/path/file.txt"}
  • Response: {"code": 0, "msg": "ok", "data": "ok"}

删除文件

删除指定文件。

  • URL: /_admin/delete

  • Method: POST

  • Headers:

    • admin-api-token: 管理员令牌

    • Content-Type: application/json

  • Body:

    复制代码
    {  "path": "path/to/file.txt"}
  • Response: {"code": 0, "msg": "ok", "data": "ok"}

文件下载

下载文件。

  • URL: /{fileName}

  • Method: GET

  • Response: 文件内容

许可证

Apache 2.0 License

相关推荐
2601_960567962 小时前
电商套图自动化效率的工程量化分析——从逐张生成到批量套图的架构演进
运维·架构·自动化
吳所畏惧3 小时前
宝塔面板Redis密码修改指南:SSH命令修改 vs 面板UI界面修改,哪个更靠谱?
运维·服务器·数据库·redis·缓存·ssh
DFT计算杂谈3 小时前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习
HiDev_4 小时前
【非标自动化】2、认识元器件(确定目标)
运维·自动化
维天说4 小时前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json
Zhang~Ling4 小时前
从 fopen 到 struct file:从零开始拆解 Linux 文件 I/O
linux·运维·服务器
爱写代码的阿森4 小时前
鸿蒙三方库 | harmony-utils之PreferencesUtil首选项数据监听详解
服务器·华为·harmonyos·鸿蒙·huawei
爱写代码的森4 小时前
蒙三方库 | harmony-utils之FileUtil文件重命名与属性查询详解
linux·运维·服务器·华为·harmonyos·鸿蒙·huawei
中微极客5 小时前
2026主流AI Agent框架技术选型与性能对比
运维·网络·人工智能
久曲健的测试窝5 小时前
智能座舱自动化测试落地方案:数字仿真搭配实车实测,解决用例运维与场景失真难题
运维