如何在将文件上传到 FastAPI 时使用 HTML 复选框发送可选参数?
在 FastAPI 中,可以使用 HTML 复选框来发送可选参数。以下是一个简单的示例,展示如何将文件与复选框一起上传。
首先,创建一个 FastAPI 服务器,处理文件上传和复选框参数。
from fastapi import FastAPI, File, UploadFile, Form from fastapi.responses import HTMLResponse from fastapi.middleware.cors import CORSMiddleware app = FastAPI() # 允许跨域请求(可选) app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) @app.get("/", response_class=HTMLResponse) async def get_form(): return """ <form action="/upload" method="post" enctype="multipart/form-data"> <input type="file" name="file" required> <br> <label> <input type="checkbox" name="optional_param" value="1"> 选择可选参数 </label> <br> <input type="submit" value="上传"> </form> """ @app.post("/upload") async def upload_file(file: UploadFile = File(...), optional_param: str = Form(None)): content = await file.read() filename = file.filename optional_value = optional_param is not None # 如果复选框被选中,optional_param 将为 "1" return { "filename": filename, "file_content": content.decode("utf-8"), # 假设文件是文本文件 "optional_param": optional_value, } if __name__ == "__main__": import uvicorn uvicorn.run(app, host="127.0.0.1", port=8000)
上面的代码包含一个简单的 HTML 表单,其中有一个文件输入和一个复选框。当用户选择文件并提交表单时,/upload 端点会处理上传的文件和复选框的状态。
/upload
name
optional_param
value
"1"
File
Form
file
None
要运行 FastAPI 服务器,可以使用以下命令:
uvicorn your_script_name:app --reload
在浏览器中访问 http://127.0.0.1:8000/,选择一个文件并选择或不选择复选框,然后点击“上传”按钮。你将看到上传的文件名、文件内容和复选框的状态(是否被选中)的 JSON 响应。
http://127.0.0.1:8000/