FastAPI是个现代化的,迅速(性能卓越)pythonweb架构。本文运用fastapi完成上传图片作用,文章中的实例编码解读详尽,所需要的可以了解一下
应用File完成文件传送
应用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实现文件上传
对于大文件,不适合将文件内容全部读取到内存中,此时使用UploadFile
from fastapi import FastAPI,UploadFile ap=FastAPI() app.post("/uploadfile/") async def create_upload_file(file:UploadFile): return{"filename":file.filename}
和bytes对比,应用UploadFile有以下益处:
不用使用File()做为途径实际操作函数中参数初始值
不把文件信息所有载入到运存中,反而是大批量载入一定数量的数据信息,边写边存电脑硬盘。
能够获取文件的数据库。
该类别的自变量能够像文档自变量相同实际操作。
UploadFile的特性
filename:种类是str,用于获取文件的名称,例如:myimage.png
content_type:种类是str,用于获得文件的类型,例如:image/png
file:类文件对象,是个标准化的python文件对象
除开这几个元素属性外,UploadFile也有3个async方式:
write,将str或是bytes提到文档中
read:读文件
seek:移动光标
close:关闭文件
#获取文件具体内容 contents=awaitmyfile.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是个现代化的,迅速(性能卓越)pythonweb架构。根据标准化的python类别提醒,应用python3.6+搭建API的Web架构。
FastAPI的主要特征如下所示:
迅速:很高的特性,与NodeJS和Go相当(这一十分感谢Starlette和Pydantic),是速度最快的Python架构其一。
迅速编号:将开发设计速率增强约200%到300%。
更低的bug:降低大概40%的开发者人为因素造成错误。
形象化:强悍的在线编辑器适用,调节时长较短。
简易:便于应用与学习。降低阅读文章文本文档的时间也。
代码简洁:尽量避免编码反复。每一个主要参数能够申明好几个作用,降低流程的bug。
健硕:生产制造编码会一键生成互动式文本文档。
根据规范:根据并彻底适配API的开放标准:OpenAPI和JSON方式。
FastAPI立在巨人的肩膀:
Starlette用以搭建Web构件。
Pydantic用以数据信息一部分。
自然环境提前准备
组装fastapi
pipinstallfastapi
对工作环境,还要1个ASGI网络服务器,如Uvicorn或Hypercorn
pipinstall"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.
综上所述,这篇文章就给大家介绍到这里了,希望可以给大家带来帮助。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/130280.html
摘要:那在届有哪些被封神的库呢,今天就给大家介绍十个堪称杀手级别的工具包。总之,是一款非常强大且易用的网络请求库。地址最好用的框架。图像处理,该库是你的不二之选。 Pyt...
摘要:那在届有哪些被封神的库呢,今天就给大家介绍十个堪称杀手级别的工具包。该库是在之上完善的,自此请求就变得异常的简单,一行代码即可搞定。这是最流行的网络爬虫框架库,没有之一。最好用的框架。图像处理,该库是你的不二之选。 文 | 豆豆 来源:Python 技术「ID: pythonall」 ...
摘要:前言大家好,我是安果之前写过一篇文章,文中提出了一种方案,可以实现每天自动给微信群群发新闻早报如何利用爬虫实现给微信群发新闻早报详细但是对于很多人来说,首先编写一款需要一定的移动端开发经验,其次还需要另外编写无障碍服务应用,如此显得有一定难1. 前言大家好,我是安果!之前写过一篇文章,文中提出了一种方案,可以实现每天自动给微信群群发新闻早报如何利用 Python 爬虫实现给微信群发新闻早报?...
摘要:文章链接关于图片转字符画,相信大家都不陌生,经常出现在个超有趣的项目中。今天我也来实践这个有趣的项目,更进一步的是把这个功能做成一个在线的网站,直接上传图片生成字符画,在线预览可以让更多的人来体验。至此,生成字符画的脚本完成了。 文章链接:https://mp.weixin.qq.com/s/yiFOmljhyalE8ssAgwo6Jw 关于python图片转字符画,相信大家都不陌生...
阅读 909·2023-01-14 11:38
阅读 875·2023-01-14 11:04
阅读 739·2023-01-14 10:48
阅读 1979·2023-01-14 10:34
阅读 940·2023-01-14 10:24
阅读 818·2023-01-14 10:18
阅读 498·2023-01-14 10:09
阅读 571·2023-01-14 10:02