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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。