Python 官方文档:入门教程 => 点击学习
目录使用File实现文件上传使用UploadFile实现文件上传UploadFile的属性设置上传文件是可选的上传多个文件知识点补充使用File实现文件上传 使用FORM表单上传文件
使用FORM表单上传文件,fastapi使用File
获取上传的文件。
指定了参数类型是bytes:file: bytes = File()
,此时会将文件内容全部读取到内存,比较适合小文件。
使用File
需要提前安装 python-multipart
from fastapi import FastAPI, File
app = FastAPI()
@app.post("/files/")
async def create_file(file: bytes = File()):
return {"file_size": len(file)}
只要在路径操作函数中声明了变量的类型是bytes
且使用了File,
则fastapi会将上传文件的内容全部去读到参数中。
对于大文件,不适合将文件内容全部读取到内存中,此时使用UploadFile
from fastapi import FastAPI, UploadFile
app = FastAPI()
@app.post("/uploadfile/")
async def create_upload_file(file: UploadFile):
return {"filename": file.filename}
和bytes
相比,使用UploadFile
有如下好处:
File()
作为路径操作函数中参数的默认值除了这四个基础属性外,UploadFile还有三个async
方法:
# 获取文件内容
contents = await myfile.read()
设置默认值是None即可
from typing import UNIOn
from fastapi import FastAPI, File, UploadFile
app = FastAPI()
@app.post("/files/")
async def create_file(file: Union[bytes, None] = File(default=None)):
if not file:
return {"message": "No file sent"}
else:
return {"file_size": len(file)}
@app.post("/uploadfile/")
async def create_upload_file(file: Union[UploadFile, None] = None):
if not file:
return {"message": "No upload file sent"}
else:
return {"filename": file.filename}
参数的参数的类型是列表:列表元素是bytes或者UploadFile
from typing import List
from fastapi import FastAPI, File, UploadFile
app = FastAPI()
@app.post("/files/")
async def create_files(files: List[bytes] = File()):
return {"file_sizes": [len(file) for file in files]}
@app.post("/uploadfiles/")
async def create_upload_files(files: List[UploadFile]):
return {"filenames": [file.filename for file in files]}
1.FastAPI简介
FastAPI是什么
FastAPI是一个现代的,快速(高性能)python WEB框架。基于标准的python类型提示,使用python3.6+构建API的Web框架。
FastAPI的主要特点如下:
FastAPI 站在巨人的肩膀上:
环境准备
安装fastapi
pip install fastapi
对于生产环境,还需要一个ASGI服务器,如Uvicorn或Hypercorn
pip install "uvicorn[standard]"
入门示例程序
新建一个main.py,编写如下程序:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
运行程序:
uvicorn main:app --reload
INFO: Uvicorn running on Http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [28720]
INFO: Started server process [28722]
INFO: Waiting for application startup.
INFO: Application startup complete.
到此这篇关于Python利用fastapi实现上传文件的文章就介绍到这了,更多相关Python fastapi上传文件内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: Python利用fastapi实现上传文件
本文链接: https://lsjlt.com/news/118881.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0