flask中使用FileField上传文件的两种方式+前端页面上传文件(flask三种上传文件方式)

文章目录

上传文件方式一:

flask中使用FileField上传文件的两种方式+前端页面上传文件(flask三种上传文件方式)

; 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:

flask中使用FileField上传文件的两种方式+前端页面上传文件(flask三种上传文件方式)
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)

上传文件方式二:

flask中使用FileField上传文件的两种方式+前端页面上传文件(flask三种上传文件方式)

; 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文件:

flask中使用FileField上传文件的两种方式+前端页面上传文件(flask三种上传文件方式)
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)

上传文件方式三:

flask中使用FileField上传文件的两种方式+前端页面上传文件(flask三种上传文件方式)

; 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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球