(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]}