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.4.1.tar.gz (14.7 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.4.1-py3-none-any.whl (12.9 kB view details)

Uploaded Python 3

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

Hashes for large_file_upload_sdk-3.4.1.tar.gz
Algorithm Hash digest
SHA256 abfd9b49a99179a7f53c5f41b9d607a25dfada6c9ce470073c45262952fa8f1b
MD5 077d68b1cf9f9cda24c55020e2dedca5
BLAKE2b-256 aaecb19a6903a3aef11aec22390c39f36de1716e1e48aa61f4c515d742709b53

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for large_file_upload_sdk-3.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 aaa307f1b7de77325807064c30ffcca3c6f30e610db9506413d27e184527d16a
MD5 a5d5a687cac98859c89bd8cdb03ed3f1
BLAKE2b-256 9a52c2968b70684beadddb26ca4f508f84dc10945c61fc4fc02d77b4869e390c

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