如何限制文件大小和类型
在FastAPI中,你可以通过设置参数的限制条件来限制文件的大小和类型。例如,你可以使用max_length
参数来限制bytes
类型的文件的大小,使用content_type
参数来限制UploadFile
类型的文件的类型。例如:
from fastapi import FastAPI, File, Form, UploadFile
app = FastAPI()
@app.post("/files/")
async def create_file(file: bytes = File(..., max_length=100000), fileb: UploadFile = File(..., content_type=["image/png", "image/jpeg"]), token: str = Form(...)):
return {"file_size": len(file), "token": token}
上面的代码限制了bytes
类型的文件的大小不超过100000字节,限制了UploadFile
类型的文件的类型必须是image/png
或者image/jpeg
。
文件上传的完整示例
下面是一个完整的FastAPI文件上传的示例代码:
代码语言:javascript复制from fastapi import FastAPI, File, Form, UploadFile
import shutil
import os
app = FastAPI()
@app.post("/files/")
async def create_file(file: bytes = File(..., max_length=100000), fileb: UploadFile = File(..., content_type=["image/png", "image/jpeg"]), token: str = Form(...)):
with open("file.txt", "wb") as f:
f.write(file)
os.makedirs("/app/data", exist_ok=True)
shutil.copy2(fileb.filename, "/app/data")
return {"file_size": len(file), "token": token}
在这个示例中,我们声明了一个POST
方法,它接收一个bytes
类型的文件和一个UploadFile
类型的文件,还有一个token
字符串字段。我们使用max_length
和content_type
参数来限制文件的大小和类型。我们将文件保存到了当前目录下的file.txt
文件中,同时将fileb
保存到了/app/data
目录下。