flask文件上传 flask-uploads
官网 http://pythonhosted.org/Flask-Uploads/
说明:flask-uploads扩展库可以很好帮助你解决上传文件时的问题,使用非常方便
安装:
pip install flask-uploads
配置:
from flask_uploads import UploadSet, IMAGES from flask_uploads import configure_uploads, patch_request_class # 文件上传 photos = UploadSet('photos', IMAGES) # 设置上传文件的地址 app.config['UPLOADED_PHOTOS_DEST'] = os.getcwd() # 上传的初始化 configure_uploads(app, photos) # 配置上传文件大小,默认64M,设置None则会采用MAX_CONTENT_LENGTH配置选项 app.config['MAX_CONTENT_LENGTH'] = 2 * 1024 * 1024 patch_request_class(app, size=None)
添加视图函数,如下:
@app.route('/upload/', methods=['GET', 'POST']) def upload():img_url = Noneif request.method == 'POST' and 'photo' in request.files:# 生成随机的文件名suffix = os.path.splitext(request.files['photo'].filename)[1]filename = random_string() + suffix# 保存上传文件photos.save(request.files['photo'], name=filename)# 获取上传图片的URLimg_url = photos.url(filename)return render_template('upload.html', img_url=img_url)
模板文件与原生文件上传相同
完整的文件上传
配置flask-uploads,同上
配置flask-wtf
from flask_wtf import FlaskForm from flask_wtf.file import FileField, FileRequired, FileAllowed from wtforms import SubmitField # 文件上传表单 class UploadForm(FlaskForm):photo = FileField(validators=[FileRequired(message='未选择文件'), FileAllowed(photos, message='只能上传图片')])submit = SubmitField('上传')
添加视图函数
# 导入图片处理类库 from PIL import Image @app.route('/upload/', methods=['GET', 'POST']) def upload():img_url = Noneform = UploadForm()if form.validate_on_submit():# 生成随机的文件名suffix = os.path.splitext(form.photo.data.filename)[1]filename = random_string() + suffix # 保存上传文件photos.save(form.photo.data, name=filename) # 生成缩略图pathname = os.path.join(app.config['UPLOADED_PHOTOS_DEST'], filename)# 1.打开文件img = Image.open(pathname)# 2.设置尺寸img.thumbnail((128, 128))# 3.保存修改后的文件img.save(pathname) # 获取上传文件的URLimg_url = photos.url(filename)return render_template('upload.html', form=form, img_url=img_url)
添加模板文件
<!doctype html> <html lang="en"> <head><meta charset="UTF-8"><title>完整的文件上传</title> </head> <body><h1>图片上传,结合flask-wtf,flask-uploads,生成缩略图</h1><form method="post" enctype="multipart/form-data">{{ form.hidden_tag() }}{{ form.photo() }}{% for error in form.photo.errors %}<span style="color: red;">{{ error }}</span>{% endfor %}{{ form.submit() }}</form>{% if img_url %}<img src="{{ img_url }}" />{% endif %} </body> </html>
PIL只支持python2.x版本,社区开发人员对其进行了维护,以支持python3.x,
使用时需要安装,方法如下:pip install pillow
flask文件上传 flask-uploads相关推荐
- flask 文件上传
test_flask.py from flask import Flask,render_template,request,redirect,url_for,flash from werkzeug.u ...
- Flask 文件上传与下载
文件上传与下载在平时开发中很常见,所以也是很重要的一部分.下面来一起看看flask中的文件上传与下载. 相关配置 # 设置文件上传保存路径 app.config['UPLOAD_FOLDER'] = ...
- flask 接口上传文件_Flask干货:Flask数据交换——上传文件
图 | 源网络文 | 5号程序员01 事情是这样的. 有一天五号程序员打算网购一盒巧克力送给自己的女朋友 想必女朋友收到礼物是这样的: 结果商家邮寄来的巧克力中夹着一张纸条: 害!你说气不气人,现在都 ...
- java jsp filename filepath 图片上传_SpringMVC实现文件上传与下载
单文件上传: pom.xml: commons-io commons-io 1.3.2 commons-fileupload commons-fileupload 1.2.1 jstl jstl 1. ...
- nginx 上传文件漏洞_文件上传及解析漏洞
注:本文仅供学习参考 文件上传定义: 文件上传漏洞是指网络攻击者上传了一个可执行的文件到服务器并执行.这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等. 这种攻击方式是最为直接和有效的, ...
- 基于Python Flask框架+jquery Ajax技术实现的增删改查(CRUD)+Ajax的异步文件上传
运行界面(话不多说先上图) 运行之后的index界面,有登陆.注册功能 登陆界面,输入数据库中用户名.密码不为空且密码是加密的数据,进入main界面 注册界面,用的bootstrop的弹窗,用户名和密 ...
- python flask上传文件_flask 文件上传(单文件上传、多文件上传)--
文件上传 在HTML中,渲染一个文件上传字段只需要将标签的type属性设为file,即. 这会在浏览器中渲染成一个文件上传字段,单击文件选择按钮会打开文件选择窗口,选择对应的文件后,被选择的文件名会显 ...
- Python 技术篇-用flask服务实现mac本地文件上传至windows服务器指定文件夹下实例演示
操作 linux 主机的话用 paramiko 会简单很多,可以看我下面的文章. Python 技术篇-用 paramiko 库实现 winodws 本地文件上传至 linux 服务器实例演示 首先是 ...
- Web后端学习笔记 Flask(8) WTForms 表单验证,文件上传
Flask-WTF是简化了WTForms操作的一个第三方库.WTForms表单的两个主要功能是验证用户提交数据的合法性以及渲染模板.同时还包含一些其他的功能.例如CSRF保护,文件上传等功能,安装fl ...
- 【Flask】 结合wtforms的文件上传表单
表单中的文件上传 基本的表单渲染,表单类设置等等就不多说了,参看另一个文章即可.但是那篇文章里没有提到对于FileField,也就是上传文件的表单字段是如何处理,后端又是如何实现接受上传过来的文件的. ...
最新文章
- 图结构练习——DFS——判断可达性
- 【数理知识】《随机过程》方兆本老师-第3章-Markov 过程
- mysql5.5索引,MySQL--5索引选择原则
- C++设计模式之二 AbstractFactory模式
- oracle hcm 发展,甲骨文发布Oracle HCM Cloud云服务 呈现三大亮点
- (四)Java中的多线程之间实现同步+多线程并发同步
- Windows下Redis的使用
- 使用异或解题 —— 序列中仅出现一次的两个数
- PaddlePaddle(8)—— 如何写好一篇高质量的精选项目
- 关于chrome不能设置小于12px字体的问题
- 网页iframe访问
- html 漂浮 广告置顶,jquery浮动图片广告代码_页面上漂浮图片广告代码
- Struts1 页面提交到ActionForm,form为null
- 奇幻RPG(人物构建 与 Abstract Factory模式)
- 三角形周长最短问题_最短路径问题之三角形的周长最小
- jQuery对象,jQuery查找标签,层级选择器,属性选择器,表单筛选器,操作节点标签事件...
- 解析几何----双曲线左支极坐标方程
- linux下安装nvm
- Guitar Pro8电脑版更新下载及主要功能介绍
- 服务器硬件基础设施,【通讯技术】细节定成败,NFV中的硬件基础设施管理
热门文章
- 语言学句法分析树形图怎么画_科学网—《泥沙龙笔记:漫谈自动句法分析和树形图表达》 - 李维的博文...
- 韦氏成人智力测试软件,(实例分析)韦氏成人智力测验(WAIS-RC)
- 程序员:办公室里的木匠
- 分享WPS office 2019 卸载方法:
- 【性能测试】JMeter性能测试(一)-入门篇
- 川土微电子|数字隔离器替代光耦817
- 游戏后台架构发展历史及展望
- java:找不到符号
- 【SharePoint】你无权在SharePoint designer中打开此网站
- python stub_pycharm的python_stubs问题