Large File Upload SDK - Support chunked upload, resumable transfer, and Token authentication
Project description
File Upload Server
星河启智二期用于上传大文件的服务器 - 基于 FastAPI 构建,文件存储到阿里云 OSS
功能特性
- ✅ OSS 直传: SDK 通过 oss2 直接上传到 OSS,支持断点续传和分片上传
- ✅ MD5校验: 可选的文件MD5校验,确保数据完整性
- ✅ Token认证: 类似HuggingFace的Token认证机制,安全便捷
- ✅ 权限控制: 支持用户角色和数据集访问权限管理
- ✅ 使用限制: 支持文件大小和每日上传次数限制
- ✅ 上传记录: 自动保存上传记录到数据库,支持查询和统计
- ✅ RESTful API: 提供完整的REST API接口
- ✅ Docker支持: 支持容器化部署
架构
用户电脑 ---(oss2 直传)--> 阿里云 OSS (inspire-alluxio-prod)
| |
+--- SDK 获取凭证 --> 服务器 ---+--- 记录上传完成
+--- 通知前端
文件存储路径: oss://inspire-alluxio-prod/{dataset_id}/{filename}
快速开始
安装 SDK
pip install large-file-upload-sdk
上传文件
from file_upload_sdk import FileUploadSDK
sdk = FileUploadSDK(
base_url="https://file-upload-server.ai4s.com.cn",
access_token="hf_your_token_here",
)
result = sdk.upload_file(
file_path="/path/to/local_file.csv",
dataset_id="my-dataset",
progress_callback=lambda p: print(f"\r上传进度: {p:.1f}%", end="", flush=True),
)
print()
if result["success"]:
print(f"上传成功! 路径: {result.get('file_path', '')}")
else:
print(f"上传失败: {result['error']}")
Token 认证
# 方式1:直接使用已有Token
sdk = FileUploadSDK(
base_url="https://file-upload-server.ai4s.com.cn",
access_token="hf_your_token_here",
)
# 方式2:使用用户信息自动获取Token
sdk = FileUploadSDK(
base_url="https://file-upload-server.ai4s.com.cn",
user_id=12345,
user_name="张三",
)
服务端部署
环境变量
| 配置项 | 说明 |
|---|---|
OSS_ENDPOINT |
OSS Endpoint(默认 https://oss-cn-wulanchabu.aliyuncs.com) |
OSS_BUCKET |
OSS Bucket(默认 inspire-alluxio-prod) |
OSS_ACCESS_KEY_ID |
OSS AccessKey ID(必填) |
OSS_ACCESS_KEY_SECRET |
OSS AccessKey Secret(必填) |
MYSQL_HOST |
MySQL 地址 |
MYSQL_PORT |
MySQL 端口 |
MYSQL_USER |
MySQL 用户名 |
MYSQL_PASSWORD |
MySQL 密码 |
MYSQL_DATABASE |
MySQL 数据库名 |
Docker 部署
docker run -d \
--name file-upload-server \
-p 8000:8000 \
-e OSS_ACCESS_KEY_ID=your_ak \
-e OSS_ACCESS_KEY_SECRET=your_sk \
-e MYSQL_HOST=your_mysql_host \
-e MYSQL_PASSWORD=your_mysql_password \
file-upload-server
API 接口
服务启动后访问 http://localhost:8000/docs 查看完整的API文档
主要接口
| 接口 | 方法 | 说明 |
|---|---|---|
/health |
GET | 健康检查 |
/api/token/generate |
POST | 生成访问令牌 |
/api/token/verify |
POST | 验证令牌有效性 |
/api/token/revoke |
DELETE | 撤销访问令牌 |
/api/oss-upload/init |
POST | 获取 OSS 上传凭证 |
/api/oss-upload/complete |
POST | 通知上传完成 |
/api/oss-upload/status/{task_id} |
GET | 查询上传任务状态 |
/api/upload/records |
GET | 查询上传记录 |
/api/upload/records/stats |
GET | 获取上传统计信息 |
相关文档
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file large_file_upload_sdk-3.4.1.tar.gz.
File metadata
- Download URL: large_file_upload_sdk-3.4.1.tar.gz
- Upload date:
- Size: 14.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
abfd9b49a99179a7f53c5f41b9d607a25dfada6c9ce470073c45262952fa8f1b
|
|
| MD5 |
077d68b1cf9f9cda24c55020e2dedca5
|
|
| BLAKE2b-256 |
aaecb19a6903a3aef11aec22390c39f36de1716e1e48aa61f4c515d742709b53
|
File details
Details for the file large_file_upload_sdk-3.4.1-py3-none-any.whl.
File metadata
- Download URL: large_file_upload_sdk-3.4.1-py3-none-any.whl
- Upload date:
- Size: 12.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aaa307f1b7de77325807064c30ffcca3c6f30e610db9506413d27e184527d16a
|
|
| MD5 |
a5d5a687cac98859c89bd8cdb03ed3f1
|
|
| BLAKE2b-256 |
9a52c2968b70684beadddb26ca4f508f84dc10945c61fc4fc02d77b4869e390c
|