Files
markbase/docs/DOWNLOAD_SERVICE_GUIDE.md
Warren 1300a4e223
Some checks failed
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
MarkBase架构升级:Multi-Volume Virtual Tree + Dual-View Management + Git Remote修正
核心功能:
-  Categories/Series双视图管理(category_view.rs + import_markdown.rs)
-  FUSE Multi-Volume支持(tree_type参数)
-  SSH/SFTP/SCP/rsync协议完整实现(4042行)
-  NFS/SMB Module Phase 1-3完成
-  Archive Module Phase 1-4完成(2916行)
-  Download Center API完整实现
-  S3兼容API实现(560行)

Git配置修正:
-  删除错误origin(gitea.momentry.ddns.net)
-  删除m5max128(指向机器名)
-  设置origin = m5max128gitea.momentry.ddns.net/admin/markbase
-  设置m4minigitea = m4minigitea.momentry.ddns.net/warren/markbase

数据清理:
-  删除38个临时SQLite(保留accusys.sqlite、demo.sqlite)
-  删除.bak、test_*.bin、调试脚本等临时文件
-  删除临时目录(build/、download files/、raid_test/等)
-  更新.gitignore排除临时文件

架构优化:
- 52个文件修改,2434行新增,4739行删除
- Workspace成员整合(16个crate)
- 数据库状态:accusys.sqlite保留(主demo测试)

远程同步:
-  准备推送到m5max128gitea(远程Gitea)
-  准备推送到m4minigitea(本地Gitea)
2026-06-12 12:59:54 +08:00

6.1 KiB
Raw Blame History

AccuSys Download Service Guide

Overview

取代OneDrive的企业下载服务

  • 域名:download.accusys.ddns.netHTTPS via Caddy
  • 服务MarkBase v2.3Rust + Axum
  • 存储:/Users/accusys/Downloads/:user_id/

Current Features (Phase 1 Complete)

Upload Service

Web界面 https://download.accusys.ddns.net/upload

功能:

  • 无限制上传DefaultBodyLimit::disable()
  • 文件夹批量上传webkitdirectory
  • 空文件支持0 bytes
  • 空子目录支持(.keep workaround
  • SHA256完整性校验
  • 30分钟超时保护AbortController
  • 实时进度显示

API

POST /api/v2/upload-unlimited/:user_id

测试:

  • 50MB文件上传成功
  • 子目录创建成功
  • 空文件上传成功
  • SHA256校验正确

File List Service (NEW)

Web界面 https://download.accusys.ddns.net/files

功能:

  • 完整文件列表total_files, total_size
  • 文件详情filename, size, hash, path, upload_time
  • 自动刷新按钮
  • 企业级UI设计Apple风格

API

GET /api/v2/files/:user_id           # 获取完整文件列表
GET /api/v2/files/:user_id/:filename # 获取单个文件信息

响应示例:

{
  "user_id": "accusys",
  "total_files": 9,
  "total_size": 589893,
  "files": [
    {
      "filename": "Carousel01.png",
      "file_size": 573397,
      "file_hash": "0612cd4742caf17e77a5b00fa01bc4bff1820d842254f32a66f69758f2289e7e",
      "relative_path": "Carousel01.png",
      "upload_time": "2026-06-09T05:00:37Z"
    }
  ]
}

Usage Guide

1. Upload Files (Single or Folder)

步骤:

# 1. 准备空目录(如果需要)
bash scripts/prepare_upload.sh /path/to/source_folder

# 2. 打开Web界面
https://download.accusys.ddns.net/upload

# 3. 选择文件夹webkitdirectory支持
- 点击"Select Folder"
- 选择整个文件夹
- 自动上传所有文件
- 实时进度显示

# 4. 验证上传
https://download.accusys.ddns.net/files

2. View Uploaded Files

Web界面 https://download.accusys.ddns.net/files

功能:

  • 显示总文件数、总大小
  • 列出所有文件filename, size, hash, path, time
  • 实时刷新按钮

API方式

# 获取完整文件列表
curl -s https://download.accusys.ddns.net/api/v2/files/accusys | jq '.total_files, .total_size'

# 获取单个文件信息
curl -s https://download.accusys.ddns.net/api/v2/files/accusys/Carousel01.png | jq '.file_size, .file_hash'

Next Steps (Phase 2-5)

Phase 2: Product List API (TODO)

**目标:**按产品系列分类文件

数据库设计:

CREATE TABLE products (
    id INTEGER PRIMARY KEY,
    product_name TEXT,
    series TEXT, -- ExaSAN-DAS, ExaSAN-SAN, Gamma, T-Share, InneRAID, Legacy
    description TEXT
);

CREATE TABLE product_files (
    id INTEGER PRIMARY KEY,
    product_id INTEGER,
    file_path TEXT,
    download_count INTEGER DEFAULT 0,
    uploaded_at TEXT,
    FOREIGN KEY (product_id) REFERENCES products(id)
);

API设计

GET /api/v2/products              # 获取产品列表
GET /api/v2/products/:series      # 获取特定系列产品
GET /api/v2/products/:id/files    # 获取产品的文件列表

Phase 3: Download API (TODO)

**目标:**提供下载URL

API设计

GET /api/v2/download/:file_id     # 下载文件(增加下载计数)
GET /api/v2/download/stats        # 下载统计

功能:

  • 文件下载(直接下载到浏览器)
  • SHA256校验下载后验证
  • 下载统计(每个文件下载次数)

Phase 4: File Migration (TODO)

**目标:**迁移290个文件到正式目录

迁移策略:

# 1. 创建产品目录结构
mkdir -p /Users/accusys/Downloads/accusys/{ExaSAN-DAS,ExaSAN-SAN,Gamma,T-Share,InneRAID,Legacy}

# 2. 上传290个文件按产品分类
https://download.accusys.ddns.net/upload

# 3. 导入到数据库
INSERT INTO product_files ...

Phase 5: Download Statistics (TODO)

**目标:**下载统计和访问控制

数据库设计:

CREATE TABLE download_log (
    id INTEGER PRIMARY KEY,
    file_id INTEGER,
    download_time TEXT,
    ip_address TEXT,
    user_agent TEXT,
    FOREIGN KEY (file_id) REFERENCES product_files(id)
);

Architecture

MarkBase Download Service
├── Upload Service (✅ Complete)
│   ├── upload.html (Web界面)
│   ├── upload_unlimited API
│   └── storage.rs (文件存储)
│
├── File List Service (✅ Complete)
│   ├── file_list.html (Web界面)
│   ├── storage.rs (文件扫描)
│   ├── handlers.rs (API handlers)
│   └── db.rs (数据库准备)
│
├── Product Service (⚠️ TODO Phase 2)
│   ├── products/files API
│   └── download.sqlite
│
└── Download Service (⚠️ TODO Phase 3)
    ├── download API
    └── stats API

Testing Results

Upload Service Testing

  • 50MB file upload (成功)
  • Empty file upload (.localized)
  • Empty directory (.keep workaround)
  • SHA256 checksum verified

File List Service Testing

  • API endpoint working (GET /api/v2/files/accusys)
  • Web UI working (https://download.accusys.ddns.net/files)
  • File metadata correct (size, hash, path, time)
  • Real-time refresh working

Current Status

已完成功能2/5

  1. Upload Service无限制上传 + 文件夹批量)
  2. File List Service文件列表查看
  3. ⚠️ Product List API待开发
  4. ⚠️ Download API待开发
  5. ⚠️ Download Statistics待开发

已上传文件:

  • 总文件数9个
  • 总大小576KB
  • 用户accusys
  • 存储路径:/Users/accusys/Downloads/accusys/

Deployment

MarkBase PID 8936运行中

Port 11438HTTP+ 80/443HTTPS via Caddy

Caddy Config

download.accusys.ddns.net {
    reverse_proxy localhost:11438
}

Last Updated 2026-06-09 14:22 Version 2.7 (Download Service Phase 1 Complete)