资讯专栏INFORMATION COLUMN

Python运用fastapi完成上传图片

89542767 / 1291人阅读

  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

相关文章

  • 秀的一批,那些你不得不知的 Python 杀手级框架

    摘要:那在届有哪些被封神的库呢,今天就给大家介绍十个堪称杀手级别的工具包。总之,是一款非常强大且易用的网络请求库。地址最好用的框架。图像处理,该库是你的不二之选。 Pyt...

    zeyu 评论0 收藏0
  • 秀的一批,那些你不得不知的 Python 杀手级框架!

    摘要:那在届有哪些被封神的库呢,今天就给大家介绍十个堪称杀手级别的工具包。该库是在之上完善的,自此请求就变得异常的简单,一行代码即可搞定。这是最流行的网络爬虫框架库,没有之一。最好用的框架。图像处理,该库是你的不二之选。 文 | 豆豆 来源:Python 技术「ID: pythonall」 ...

    ninefive 评论0 收藏0
  • App 端自动化的最佳方案,完全解放双手!

    摘要:前言大家好,我是安果之前写过一篇文章,文中提出了一种方案,可以实现每天自动给微信群群发新闻早报如何利用爬虫实现给微信群发新闻早报详细但是对于很多人来说,首先编写一款需要一定的移动端开发经验,其次还需要另外编写无障碍服务应用,如此显得有一定难1. 前言大家好,我是安果!之前写过一篇文章,文中提出了一种方案,可以实现每天自动给微信群群发新闻早报如何利用 Python 爬虫实现给微信群发新闻早报?...

    番茄西红柿 评论0 收藏2637
  • AI新时代-大牛教你使用python+Opencv完成人脸解锁(附源码)

    摘要:创建人脸集合,并加入里面填的就是刚才奥巴马图片返回的,不要填错哦面部集合的名字也要记住,待会查询的时候也会用到的。判断是否为管理员我们将奥巴马的面部值放入的里面,将要去查询的面部集合相册设置为我们前面获取的,然后我们随便照一张照片匹配一下。 好吧,伙计们,我回来了。说我拖更不写文章的可以过来用你的小拳拳狠命地捶我胸口.... 那么今天我们来讲关于使用python+opencv+face...

    LinkedME2016 评论0 收藏0
  • python 图片在线转字符画预览

    摘要:文章链接关于图片转字符画,相信大家都不陌生,经常出现在个超有趣的项目中。今天我也来实践这个有趣的项目,更进一步的是把这个功能做成一个在线的网站,直接上传图片生成字符画,在线预览可以让更多的人来体验。至此,生成字符画的脚本完成了。 文章链接:https://mp.weixin.qq.com/s/yiFOmljhyalE8ssAgwo6Jw 关于python图片转字符画,相信大家都不陌生...

    CarterLi 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<