File size: 2,314 Bytes
b2e79c3
 
e12ffd8
b2e79c3
e12ffd8
b2e79c3
 
 
 
8820bb8
 
 
 
 
 
2e72a7f
8820bb8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
---
title: FastViewer
emoji: 📁
colorFrom: gray
colorTo: blue
sdk: docker
pinned: false
---

# FastFileViewer

`FastFileViewer` 是一个基于 `Golang + Gin + React` 的 Web 文件浏览器,支持服务端异步任务:

- 在沙箱根目录内浏览、上传、删除、移动、重命名文件
- 发起服务端 URL 下载任务
- URL 下载支持 Range 分片并发加速(服务器不支持时自动回退单线程)
- 发起压缩包解压任务(支持 `.zip``.tar.gz``.tgz`- 使用 SQLite 持久化任务状态并展示进度

## 项目结构

- `backend/`:Gin API、鉴权、文件操作、任务执行器
- `frontend/`:React + Vite + Ant Design 前端界面
- `Dockerfile`:单容器生产镜像

## 本地运行(Windows PowerShell)

1. 确保 Go SDK 可用。你当前机器上可用路径是:
   - `C:\Users\liu_q\sdk\go1.25.0\bin\go.exe`
2. 直接启动后端(默认零配置):

```powershell
cd backend
C:\Users\liu_q\sdk\go1.25.0\bin\go.exe mod tidy
C:\Users\liu_q\sdk\go1.25.0\bin\go.exe run ./cmd/server
```

3. 启动前端(新开一个终端):

```powershell
cd frontend
npm install
npm run dev
```

浏览器访问:`http://localhost:5173`

说明:
- 如果没有设置 `ADMIN_PASSWORD`,服务启动时会自动生成一个临时管理员密码,并打印在后端日志中。
- `JWT_SECRET``ROOT_DIR``DB_PATH``MAX_WORKERS` 都由程序自动生成或自动创建,无需手动配置。

## API 一览

- `POST /api/login`
- `GET /api/fs/list?path=.`
- `POST /api/fs/upload`(form-data:`dir``file`- `POST /api/fs/move`
- `POST /api/fs/rename`
- `POST /api/fs/delete`
- `GET /api/fs/download?path=...`
- `POST /api/tasks/download`
- `POST /api/tasks/extract`
- `GET /api/tasks`
- `GET /api/tasks/:id`
- `GET /api/tasks/:id/stream`(SSE)

## 部署到 Hugging Face Space

项目已经按单容器部署方式配置:

1. 使用 `Dockerfile` 构建镜像
2. 环境变量只建议配置两个:
   - `PORT`(默认 `7860`   - `ADMIN_PASSWORD`(可选,不配则启动时自动生成)
3. 暴露端口:`PORT=7860`(或你自定义的端口)

## 安全说明

- 所有文件操作都限制在 `ROOT_DIR` 目录内
- 除登录与健康检查外,`/api/*` 都需要 JWT 鉴权
- 解压逻辑包含路径穿越防护