文章目录
- 上传文件方式一:
* - 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}}
{{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,request
app=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.data
print('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}}
<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,request
app=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="上传文件">
<input type="submit" name="submit" value="提交">
</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,request
app=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)
Original: https://blog.csdn.net/Keep_Trying_Go/article/details/123384943
Author: Keep_Trying_Go
Title: flask中使用FileField上传文件的两种方式+前端页面上传文件(flask三种上传文件方式)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/747206/
转载文章受原作者版权保护。转载请注明原作者出处!