轻量级云文件系统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

相关推荐
七夜zippoe12 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
盟接之桥13 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
Fcy64814 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满14 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠14 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
主机哥哥14 小时前
阿里云OpenClaw部署全攻略,五种方案助你快速部署!
服务器·阿里云·负载均衡
Harvey90314 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
珠海西格电力科技15 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
释怀不想释怀16 小时前
Linux环境变量
linux·运维·服务器
zzzsde16 小时前
【Linux】进程(4):进程优先级&&调度队列
linux·运维·服务器