flask中使用FileField上传文件的两种方式+前端页面上传文件(flask三种上传文件方式)
文章目录
- 上传文件方式一:
- 1.index.html文件:
- 2.主文件main.py:
- 上传文件方式二:
- 1.index2.html文件:
- 2.main.py文件:
- 上传文件方式三:
- 1.index3.html文件:
- 2.main.py文件:
上传文件方式一:
1.index.html文件:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>WTF</title>
</head>
<body><form action="" method="POST">{{login.csrf_token()}}{{login.file.label}}{{login.file}}<br>{{login.submit}}</form>
</body>
</html>
2.主文件main.py:
import os
from flask_wtf import FlaskForm
from werkzeug.utils import secure_filename
from wtforms.validators import DataRequired,EqualTo
from wtforms import StringField,PasswordField,SubmitField,FileField
from flask import Flask,render_template,redirect,url_for,jsonify,abort,requestapp=Flask(__name__)
app.secret_key='WTF_FILE'class Register(FlaskForm):file=FileField(label='文件选择: ',validators=[DataRequired()])submit=SubmitField(label='提交')#自定义错误
@app.errorhandler(404)
def handel_error(error):return jsonify('Failure'),404@app.route('/index',methods=['POST','GET'])
def index():login=Register()filename=''if request.method=='POST':if login.validate_on_submit():filename=login.file.dataprint('filename: {}'.format(filename))return 'Valid Successed'else:abort(404)return render_template('index.html',login=login,filename=filename)if __name__ == '__main__':print('Pycharm')app.run(debug=True)
上传文件方式二:
1.index2.html文件:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>WTF</title>
</head>
<body><form action="/index" method="POST" enctype="multipart/form-data">{{login.csrf_token()}}{{login.file.label}}{{login.file}}<br><input type="submit" value="提交"></form>
</body>
</html>
2.main.py文件:
import os
from flask_wtf import FlaskForm
from flask_wtf.file import FileField
from werkzeug.utils import secure_filename
from wtforms.validators import DataRequired,EqualTo
from wtforms import StringField,PasswordField,SubmitField
from flask import Flask,render_template,redirect,url_for,jsonify,abort,requestapp=Flask(__name__)
app.secret_key='WTF_FILE'class Register(FlaskForm):file=FileField(label='文件选择: ')#自定义错误
@app.errorhandler(404)
def handel_error(error):return jsonify('Failure'),404@app.route('/index',methods=['POST','GET'])
def index():login=Register()filename=''if request.method=='POST':if login.validate_on_submit():#对文件名进行安全检测filename=secure_filename(login.file.data.filename)login.file.data.save('images/'+filename)print('filename: {}'.format(filename))return 'Valid Successed'else:abort(404)return render_template('index2.html',login=login,filename=filename)if __name__ == '__main__':print('Pycharm')app.run(debug=True)
上传文件方式三:
1.index3.html文件:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>File</title>
</head>
<body><form action="http://127.0.0.1:5000/index" method="POST" enctype="multipart/form-data"><input type="file" name="filename" value="上传文件"><br><input type="submit" name="submit" value="提交"><br></form>
</body>
</html>
2.main.py文件:
import os
from werkzeug.utils import secure_filename
from flask import Flask,render_template,redirect,url_for,abort,jsonify,requestapp=Flask(__name__)#自定义错误
@app.errorhandler(404)
def handel_error():return jsonify('The file has been upload fail!'),404@app.route('/index',methods=['POST','GET'])
def index():if request.method=='POST':file=request.files.get('filename')if file is None:abort(404)filename=file.filename#对文件名进行安全检测filename=secure_filename(filename)#os.path.dirname 去掉文件名,返回目录file.save(os.path.dirname(__file__)+'\\images\\'+filename)print('filename: {}'.format(filename))return jsonify('Upload Successed!')return render_template('index3.html')if __name__ == '__main__':print('Pycharm')app.run(debug=True)
flask中使用FileField上传文件的两种方式+前端页面上传文件(flask三种上传文件方式)相关推荐
- 计算机新建文件夹的步骤打开,Win10新建文件夹假死,不要慌!教你这三种方法,轻松应对。...
原标题:Win10新建文件夹假死,不要慌!教你这三种方法,轻松应对. 使用电脑开启文件夹是我们日常电脑使用过程中,经常会进行操作的事情.而有时我们在使用win10打开文件夹的时候会出现假死的现象,打开 ...
- java 解析csv_java解析CSV文件(getCsvData 解析CSV文件 zipFiles 打成压缩包 exportObeEventDataExcel 前端页面响应)...
//CSVUtil.class为类名 private static final Logger log = Logger.getLogger(CSVUtil.class); //filepath 可以为 ...
- python中spark有什么功能_Spark SQL是什么,提供的主要功能有哪三种?
Spark SQL允许大家在Python.Java以及Scala中使用数据帧;利用多种结构化格式读取并写入数据;通过SQL进行大数据查询. Spark SQL属于Spark用于处理结构化与半结构化数据 ...
- export function函数传参_从底层看前端(七)—— JavaScript到底有多少种函数?
在上篇文章中我们了解到了执行上下文是什么,也知道了任何语句的执行都会依赖特定的上下文. 一旦上下文被切换,整个语句的效果可能都会发生变化.那么,切换上下文的时机就显得非常重要. 在JavaScript ...
- python中两个集合的运算并交补_三种方式实现 Python 中的集合的交、并、补运算...
文章目录 三种方式实现 Python 中的集合的交.并.补运算 一 背景 集合这个概念在我们高中阶段就有所了解,毕业已多年,我们一起回顾一下几个集合相关的基本概念吧? 集合是指具有某种特定性质的具体的 ...
- linux自动点击软件上的按钮有什么用,教会你Linux Shell自动交互的三种方法
你了解Linux系统么?你是Linux系统的应用者么?如果你要学习linux,你可能会遇到Linux Shell自动交互问题,这里将介绍Linux Shell自动交互的解决方法,在这里拿出来和大家分享 ...
- 文件权限管理 -- u+s、g+s、o+t/三种用户权限
liunx中有文件有三种权限,用户权限,群组权限,其他用户权限,分别为r(可写)w(可读)x(可执行)rwxrwx ,还有s/t特殊权限,可分为: rwsrwxrwx 用户权限出现s,替代了x rwx ...
- Html和Markdown中的空格, nbsp; ensp; emsp; 以及 thinsp; zwnj; zwj;三种Unicode空格
HTML和Markdown可以用以下转义字符分隔字符 , , , , , 的宽度,可运行于所有主流浏览器.其他几种空格( , , , ,)在不同浏览器中宽度各 ...
- java 三种错误类型 区别_请列举至少三种在java语言中发生“严重错误”的情况...
[简答题]自已编写一个自定义非整数异常类,来处理一个异常 [填空题]捕获异常时,可以把catch捕获的异常对象( ),使上层try-catch结构继续处理该异常事件;也可以把异常对象转换为其它异常对象 ...
最新文章
- 图像配准----RANSAC
- 使用OpenCV为视频中美女加上眼线
- 12306架构到底是不是国内最牛逼的架构
- 下划线转驼峰,并且首字母大写
- 性能远超AtomicLong,LongAdder原理完全解读
- qpython numpy_Python-Numpy全面精简教程
- (原创)对某国的一次渗透
- LVM逻辑卷,RAID磁盘阵列
- Myeclipse项目加入maven支持
- python的多线程应用前景_什么是线程(多线程),Python多线程的好处
- HDU1754 —— I Hate It 线段树 单点修改及区间最大值
- Windows下MySql主从配置实战教程
- java使用SAX接口解析xml文件
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_01 File类_4_File类的构造方法...
- c语言 软件编程入门自学,软件编程入门自学
- 一些开源的IOS项目(wifi扫描 条形码扫描 tcp/ip 等等)
- AspectJ+AJDT+用Ant管理AspectJ项目+AspectJ教程
- ps放大图片后变模糊怎么办,如何变清晰?
- 路由器无线中继WDS\WISP\CLINENT+AP优劣
- php doctrine datetime,关于php:Doctrine 2.1 – datetime列的默认值