网上很多说的,包括官网说的,用UploadFile可以解决大文件上传,
基本上都是吹牛逼,
现在的文件,动不动就是几百兆,几G的文件,
UploadFile能解决啥,
用一台2核4G的服务器测试过,UploadFile最多只能支持100多兆的文件上传。
文件超过150兆~200兆就悬了,看命,命好的话,服务器刚好缓存比较多,上传成功。
命差的话,直接撑爆缓存,上传失败
所以,大文件上传,有且只有一条路子,分片上传
废话不说了,直接上代码
一、文件上传接口,如下:
@router.post("/upload/uploadfile")
async def upload_big_file(file: UploadFile = File(...), chunknumber: str = Form(...), identifier: str = Form(...)):#分片上传文件【用唯一标志符+分片序号】作为文件名
if len(chunknumber) == 0 or len(identifier) == 0:
return {"eroor": "没有传递相关参数"}
task = identifier # 获取文件唯一标识符
chunk = chunknumber # 获取该分片在所有分片中的序号【客户端设定】
filename = '%s%s' % (task,chunk) # 构成该分片唯一标识符
contents = await file.read() #异步读取文件
with open(f"{settings.STATIC_DIR}/uploads/{filename}", "wb") as f:
f.write(contents)
return {"filename": file.filename}
FastAPI实现大文件分片上传

最低0.47元/天 解锁文章
745

被折叠的 条评论
为什么被折叠?



