前端用户需要上传文件至平台,就比如CSDN的上传资源部分,都是一样的功能逻辑,想要实现这个功能其实并不难。
这里以上传的JSON格式文件为例,其他格式文件的话可以自行查看官方文档。由于json格式的文件需要转变为字典结构,相较其他而言特殊一些,所以下面以json格式文件为例。
from fastapi import APIRouter, HTTPException, Response, Request, FastAPI, File, UploadFile, Form, Query
@gpt_router.post("/uploadfiles")
async def create_upload_files(files: List[UploadFile] = File(...), task_id: str = Form(None)):
for uploaded_file in files:
# 判断文件类型是否为 JSON
if not uploaded_file.filename.endswith(".json"):
return HttpResponse.ok(message="文件格式有误,请上传json格式")
# 读取并转换数据
contents = await uploaded_file.read()
json_data = json.loads(contents)
# 对数据进行下一步操作
# print(json_data)
# ...
return HttpResponse.ok(message="上传成功")
这里用ApiFox进行模拟用户上传操作。
需要注意的是,上传文件用form-data格式进行上传操作。
接口进行接收的话也要注意格式,使用files: List[UploadFile] = File(...), task_id: str = Form(None)
进行接收,From
和File
数据格式,这样接口会将数据自动识别为from-data进行处理。
API测试工具是可以通过点选自动将数据修改为form-data
格式,但在前端进行请求的话,注意修改请求数据格式为form-data
。
文件保存操作
文件有上传就保存,文件下载保存接口的创建操作请移步这篇文章:
链接: 文件下载保存接口的创建_FastAPI