python flask接口开发,python flask 上传文件

  python flask接口开发,python flask 上传文件

  刚领导安排任务,需求是这样的开发一个支持多格式图片上传的接口,并且将图片压缩,支持在线预览图片,下面小编分享下使用pythonflask框架开发图片上传接口的案例详解,感兴趣的朋友一起看看吧

  大蟒版本:3.6

  需要模块:烧瓶、枕头

  需求:开发一个支持多格式图片上传的接口,并且将图片压缩,支持在线预览图片。

  目录结构:

  app.py编辑内容:

  从瓶导入烧瓶,请求,响应,渲染模板

  从werkzeug.utils导入安全文件名

  导入操作系统

  导入全局唯一识别

  来自太平航运进口图片,出口标签

  app=Flask(__name__) #实例瓶应用

  # 设置允许上传的文件格式

  ALLOW_EXTENSIONS=[png , jpg , jpeg]

  # 设置图片保存文件夹

  app.config[上传文件夹]=/static/image/

  # 设置图片返回的域名前缀

  image _ URL= http://127。0 .0 . :8002/image/

  # 设置图片压缩尺寸

  图像_c=1000

  # 跨域支持

  请求后定义(响应):

  resp。头[ Access-Control-Allow-Origin ]= *

  退货责任

  应用程序请求后(请求后)

  # 判断文件后缀是否在列表中

  def allowed_file(文件名):

  返回"."在文件名和filename.rsplit( . 中,1)[-1]在允许_扩展

  # 首页

  @app.route(/)

  def hello_world():

  返回render_template(index.html )

  # 心跳检测

  @app.route(/check ,methods=[GET])

  定义检查():

  返回"即时消息"

  # 图片获取地址用于存放静态文件

  @app.route(/image/imageId )

  def get_frame(imageId):

  # 图片上传保存的路径

  尝试:

  打开(r 时/static/image/{} .格式(imageId), rb )为f:

  image=f.read()

  结果=响应(image,mimetype=image/jpg )

  回送结果

  除了基本异常作为e:

  返回{ 代码 : 503 ,数据 :字符串(e),消息 : 图片不存在}

  # 上传图片

  @app.route(/upload_image ,methods=[POST , GET])

  极好的上传():

  if request.method==POST:

  # 获取文件

  file=request.files[file]

  # 检测文件格式

  如果文件和允许文件(文件.文件名):

  #安全文件名方法会去掉文件名中的中文,获取文件的后缀名

  文件名hz=安全文件名(文件。文件名)。拆分(.)[-1]

  # 使用全局唯一识别生成唯一图片名

  名字=str(uuid.uuid4())

  # 将全局唯一识别和后缀拼接为完整的文件名

  文件名=名字.文件名赫兹

  # 保存原图

  文件。保存(操作系统。路径。加入(app。配置[上传文件夹],文件名))

  # 以下是压缩图片的过程,在原图的基础上

  file_min=Image.open(file)

  # exif读取原始方位信息防止图片压缩后发生旋转

  尝试:

  用于出口导向标签。钥匙():

  如果退出。标签[方向]=方向:突破

  exif=dict(file_min ._getexif().items())

  如果EXIF[方向]==3:

  file_min=file_min.rotate(180,expand=True)

  埃利夫elif方向]==6:

  file_min=file_min.rotate(270,expand=True)

  埃利夫elif方向]==8:

  file_min=file_min.rotate(90,expand=True)

  例外:

  及格

  # 获取原图尺寸

  w,h=file_min.size

  # 计算压缩比

  毕丽=int(带图像c)

  # 按比例对宽高压缩

  文件_最小。缩略图((w //毕丽,h //毕丽))

  # 生成缩略图的完整文件名

  文件名分钟=名字分钟。文件名赫兹

  # 保存缩略图

  file _min。保存(操作系统。路径。加入(app。配置[上传文件夹],文件名_ min))

  # 返回原本和缩略图的完整浏览链接

  return {code: 200 , image_url: image_url文件名, image_url_min: image_url文件名_min,

  邮件“:”已成功上传 }

  else:

  返回格式错误,仅支持jpg,png和jpeg格式文件

  Return {code 3360 503 , data 3360 , message 3360 仅支持post方法 }

  if __name__==__main__:

  App.run (host= 0.0.0.0 ,port=8002,debug=true) #项目条目

  运行app.py

  使用postman对接口进行测试:

  返回结果:

  从浏览器打开查看:

  让我们打开文件夹查看图片:

  可以看到压缩图和原图的大小。

  完了!(评论很详细,不想打了)

  以上就是本文关于使用python flask框架开发图片上传界面案例的详细说明。更多关于python flask框架开发图片上传接口的信息,请搜索热门IT软件开发工作室之前的文章或者继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: