|
|
"""上传相关 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哈希(用于最终校验)"},
|
|
|
)
|