加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
18_RequestFiles.py 1.48 KB
一键复制 编辑 原始数据 按行查看 历史
Power9508 提交于 2024-09-24 18:28 . 增加一些示例代码
# 文件上传 File, UploadFile
from typing import Annotated
from fastapi import FastAPI, File, Form, UploadFile
app = FastAPI()
# 小文件不处理时 bytes
@app.post("/files/")
async def create_file(file: Annotated[bytes, File()]):
return {"file_size": len(file)}
# 大文件流式处理 UploadFile
@app.post("/uploadfile/")
async def create_upload_file(
file: Annotated[UploadFile, File()],
):
return {"filename": file.filename}
# 多文件上传
@app.post("/uploadfiles/")
async def create_upload_files(files: list[UploadFile]):
return {"filenames": [file.filename for file in files]}
# 多文件上传并保存
@app.post("/upload-files/")
async def upload_files(files: list[UploadFile] = File(...)):
file_names = []
for file in files:
contents = await file.read()
with open(file.filename, "wb") as f:
f.write(contents)
file_names.append(file.filename)
return {"file_names": file_names}
# 多文件上传 还带其他参数 引入Form 如果没有什么特殊校验的话,不用 Annotated,也可以不写模型
@app.post("/upload/")
async def upload(
big_file: UploadFile = File(), # 必传
name: str = Form(...), # ... 必传
description: str = Form(None) # None可不传
):
contents = await big_file.read()
with open(big_file.filename, "wb") as f:
f.write(contents)
return {
"name": name,
"description": description,
"big_file_name": big_file.filename
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化