FastViewer / README.md
StarrySkyWorld's picture
Add multi-part concurrent download with single-stream fallback
2e72a7f
metadata
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. 直接启动后端(默认零配置):
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
  1. 启动前端(新开一个终端):
cd frontend
npm install
npm run dev

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

说明:

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

API 一览

  • POST /api/login
  • GET /api/fs/list?path=.
  • POST /api/fs/upload(form-data:dirfile
  • 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 鉴权
  • 解压逻辑包含路径穿越防护