使用FastAPI处理文件上传,文件上传Content-Type必须使用multipart/form-data,因为python服务端必须要安装python-multipart模块。另外在postman客户端,需要在body中选择form-data,在下面的key输入框右边鼠标停留(会出现一个下拉选择file/text),选择file表示这是个文件域,从而右边可以上传文件。此时header中会自动生成Content-Type:multipart/form-data; boundary=<calculated when request is sent> 项,不需要我们手动配置。本文地址:http://47.93.183.36/article/934.html,未经许可,不得转载.
#python安装python-multipart模块 $ pip install python-multipart Collecting python-multipart Downloading python-multipart-0.0.5.tar.gz (32 kB) Installing collected packages: python-multipart Successfully installed python-multipart-0.0.5本文地址:http://47.93.183.36/article/934.html,未经许可,不得转载.
现下来就是服务端的python处理程序了,FastAPI有两种处理的办法,一种是使用bytes二进制,一种是使用UploadFile。两种方法的示例代码如下:本文地址:http://47.93.183.36/article/934.html,未经许可,不得转载.
from fastapi import File,UploadFile import shutil from pathlib import Path from tempfile import NamedTemporaryFile @app.post("/test/upload", summary="bytes方式") async def test_upload(files: bytes=File(...)): #打开一个文件。开始写入 with open("a.txt", "w+", encoding="utf-8") as f: f.write(files.decode("utf-8")) f.flush() print(files.decode("utf-8")) return {"file_size": len(files)} @app.post("/test/fileupload", summary="UploadFile方式") async def test_fileupload(files: UploadFile=File(...)): save_dir = "./uploads" try: suffix = Path(files.filename).suffix #创建一个临时文件并写入 with NamedTemporaryFile(delete=Falst, suffix=suffix, dir=save_dir) as tmp: shutil.copyfileoby(files.file, tmp) tmp_file_name = Path(tmp.name).name finally: files.file.close() return {"old_name":files.filename, "tmp_name":tmp_file_name}本文地址:http://47.93.183.36/article/934.html,未经许可,不得转载.
本文地址:http://47.93.183.36/article/934.html 未经许可,不得转载. 手机访问本页请扫描右下方二维码.
手机扫码直接打开本页面 |