FastAPI - 如何在使用 UploadFile 时读取 json 文件
FastAPI - How to read an json file while using UploadFile
from typing import List, Optional
from fastapi import FastAPI, File, UploadFile
from fastapi.responses import HTMLResponse
from pydantic import BaseModel
app = FastAPI(debug=True)
@app.post("/uploadfiles/")
def create_upload_files(upload_file: UploadFile = File(...)):
json_data = ?? upload_file ??
result = model().calculate(json_data)
return { "estimation": result}
@app.get("/")
async def main():
content = """
<body>
<form action="/uploadfiles/" enctype="multipart/form-data" method="post">
<input name="upload_file" type="file" multiple>
<input type="submit">
</form>
</body>
"""
return HTMLResponse(content=content)
我有上面的 FastAPI 应用程序。我需要上传 json 文件。因此 upload_file 是一个 json 文件。 model() 实例还使用了一种计算方法,该方法将 json 数据作为输入。我苦苦思索如何将 upload_file 从 Fast_API 解码为字典格式。
我试过了
upload_file.read()
但是这个returns一个字节数组
你能帮忙吗?
您可以使用标准 json
模块通过使用上传的 JSON 文件中的 json.load()
--(Doc) 解析内容为
from fastapi import FastAPI, File, UploadFile
<b>import json</b>
app = FastAPI(debug=True)
@app.post("/uploadfiles/")
def create_upload_files(upload_file: UploadFile = File(...)):
<b>json_data = json.load(upload_file.file)</b>
return {"data_in_file": json_data}
因此,您的 json_data
变量中将包含 JSON 内容。
或者,您可以使用 json.loads()
--(Doc) 函数作为
json_data = json.loads(upload_file.file.read())
from typing import List, Optional
from fastapi import FastAPI, File, UploadFile
from fastapi.responses import HTMLResponse
from pydantic import BaseModel
app = FastAPI(debug=True)
@app.post("/uploadfiles/")
def create_upload_files(upload_file: UploadFile = File(...)):
json_data = ?? upload_file ??
result = model().calculate(json_data)
return { "estimation": result}
@app.get("/")
async def main():
content = """
<body>
<form action="/uploadfiles/" enctype="multipart/form-data" method="post">
<input name="upload_file" type="file" multiple>
<input type="submit">
</form>
</body>
"""
return HTMLResponse(content=content)
我有上面的 FastAPI 应用程序。我需要上传 json 文件。因此 upload_file 是一个 json 文件。 model() 实例还使用了一种计算方法,该方法将 json 数据作为输入。我苦苦思索如何将 upload_file 从 Fast_API 解码为字典格式。
我试过了 upload_file.read() 但是这个returns一个字节数组
你能帮忙吗?
您可以使用标准 json
模块通过使用上传的 JSON 文件中的 json.load()
--(Doc) 解析内容为
from fastapi import FastAPI, File, UploadFile
<b>import json</b>
app = FastAPI(debug=True)
@app.post("/uploadfiles/")
def create_upload_files(upload_file: UploadFile = File(...)):
<b>json_data = json.load(upload_file.file)</b>
return {"data_in_file": json_data}
因此,您的 json_data
变量中将包含 JSON 内容。
或者,您可以使用 json.loads()
--(Doc) 函数作为
json_data = json.loads(upload_file.file.read())