You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
iTi-Flask/iti/applications/routes/common/schemas/upload.py

72 lines
2.3 KiB
Python

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

"""上传相关 Schema"""
from apiflask.fields import String, File, Integer, Dict as DictField, Enum
from iti.applications.common.enums.sys import StorageTypeEnum
from iti.applications.common.utils import BaseSchema
class UploadIn(BaseSchema):
"""文件直接上传输入"""
file = File(required=True)
directory_id = String(required=False, load_default=None, data_key="directoryId")
storage_type = Enum(StorageTypeEnum, required=False, load_default=None, data_key="storageType")
class ChunkUploadInitIn(BaseSchema):
"""分片上传初始化输入"""
filename = String(required=True, metadata={"description": "文件名"})
file_size = Integer(required=True, metadata={"description": "文件总大小(字节)"})
file_hash = String(
required=False,
load_default=None,
metadata={"description": "文件MD5哈希用于秒传"},
)
chunk_size = Integer(
required=False,
load_default=2097152,
metadata={"description": "分片大小字节默认2MB"},
)
total_chunks = Integer(
required=False, load_default=None, metadata={"description": "总分片数"}
)
directory_id = String(
required=False, load_default=None, metadata={"description": "目录ID"}
)
storage_type = Enum(
StorageTypeEnum,
required=False,
load_default=None,
metadata={"description": "存储类型"},
)
metadata = DictField(
required=False, load_default=dict, metadata={"description": "扩展元数据"}
)
class ChunkUploadIn(BaseSchema):
"""分片上传输入"""
upload_id = String(required=True, metadata={"description": "上传任务ID"})
chunk_index = Integer(
required=True, metadata={"description": "分片索引从0开始"}
)
chunk_hash = String(
required=False,
load_default=None,
metadata={"description": "分片MD5哈希用于校验"},
)
file = File(required=True, metadata={"description": "分片数据"})
class ChunkUploadMergeIn(BaseSchema):
"""分片合并输入"""
upload_id = String(required=True, metadata={"description": "上传任务ID"})
file_hash = String(
required=False,
load_default=None,
metadata={"description": "文件MD5哈希用于最终校验"},
)