无法通过FastAPI接收文件列表
from fastapi import FastAPI, File, UploadFile, HTTPException
from pathlib import Path
from typing import List
@app.post("/uploadfile/")
def create_upload_file(file: List[UploadFile] = File(...)):
我现在正在尝试使用FastAPI获取文件列表,但不管我怎么做,始终没有浏览和上传文件的选项,尽管我正在使用FastAPI官方网站的示例代码,却只能输入一串随机字符。
当我把它改成 def create_upload_file(file: UploadFile]): 时,代码就能完美运行。
def create_upload_file(file: UploadFile]):
What am I doing wrong?
解决方案
也许你应该在真实的代码中测试,而不是在文档里测试。
看来文档在显示用于多文件上传的正确表单时存在问题。
这是一个最小可运行的代码示例,展示了 HTML 与 <form> 一起用于发送 multiple 个文件,而 List[UploadFile] 对此也能起作用。
from fastapi import FastAPI, UploadFile, File
from fastapi.responses import HTMLResponse
from typing import List
app = FastAPI()
@app.get("/", response_class=HTMLResponse)
async def index():
return """
<form action="/uploadfile/" method="POST" enctype="multipart/form-data">
<input type="file" multiple name="files"/>
<input type="submit" value="Send"/>
</form>"""
@app.post("/uploadfile/")
async def create_upload_file(files: List[UploadFile]):
return {"filenames": [f.filename for f in files]}
我也用 curl 进行了测试,它也能工作。
curl -X POST "http://127.0.0.1:8000/uploadfile/" \
-H "accept: application/json" \
-H "Content-Type: multipart/form-data" \
-F "[email protected]" \
-F "[email protected]"
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。
