Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

large_file_upload_sdk-3.5.1.tar.gz (16.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

large_file_upload_sdk-3.5.1-py3-none-any.whl (14.7 kB view details)

Uploaded Python 3

File details

Details for the file large_file_upload_sdk-3.5.1.tar.gz.

File metadata

  • Download URL: large_file_upload_sdk-3.5.1.tar.gz
  • Upload date:
  • Size: 16.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.7

File hashes

Hashes for large_file_upload_sdk-3.5.1.tar.gz
Algorithm Hash digest
SHA256 b829b45d1691c9139a2a1f114ce162b1b6670aa5e1919da4fdfc710331e5fc89
MD5 b2ed8df2ec64db7d55e447f9255a763f
BLAKE2b-256 042daa7d05d678193bd1a977cc27f57de1eeb7df32f8d9a2b88960b3ca47e0f8

See more details on using hashes here.

File details

Details for the file large_file_upload_sdk-3.5.1-py3-none-any.whl.

File metadata

File hashes

Hashes for large_file_upload_sdk-3.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 24af102ab451e362dfddb43f577dc0b203128e6692ebce46a8a190ea3e87d509
MD5 68d0e73a27daff27d651a37fe4a62f53
BLAKE2b-256 f71dc354cf179e72ecfd2b14463a57f75df4feb317c4e4739e4763ff8b3c56a6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page