Python高性能web框架-FastApi教程:(9)文件上传


(9)文件上传

1. File

from fastapi import APIRouter, File # 导入File

app05 = APIRouter()

@app05.post('/file')
async def get_file(file:bytes = File()): #上传文件写法
    print(file)
    return {'file': len(file)} # 计算字节大小

测试下:

@app05.post('/files')
async def get_files(files:list[bytes] = File()):
    # 多个文件上传
    for file in files:
        print(len(file))
    return {'files': len(files)}

File适合小文件上传,一般不怎么用的。我们常用的是UploadFile

2. UploadFile

@app05.post('/uploadfile')
async def upload_file(file:UploadFile):
    # 适合大文件上传
    print(file.filename)
    # 文件保存
    with open (file.filename,'wb') as f:
        f.write(file.file.read())
    return {'filename':file.filename}

越是常用的,代码反而越简单

@app05.post('/uploadfiles')
async def upload_files(files:list[UploadFile]):
    # 多个文件上传
    for file in files:
        with open(file.filename,'wb') as f:
            f.write(file.file.read())
            print(file.filename)
    
    # 返回文件名列表
    return {'names': [file.filename for file in files]}
原文链接:,转发请注明来源!