zoukankan      html  css  js  c++  java
  • 【flask】表单-上传文件

    依赖:

    flask-wtf

    upload_case.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <form method="post" enctype="multipart/form-data">
        {{form.csrf_token}}
    
        {{form.case}}<br>
        {{form.submit}}<br>
    </form>
    </body>
    </html>

    froms.py

    from flask_wtf import FlaskForm
    from wtforms import  StringField,SubmitField
    from flask_wtf.file import FileField,FileRequired,FileAllowed
    from wtforms.validators import DataRequired,Length
    
    class UploadCaseForm(FlaskForm):
        case = FileField('Upload Case',validators=[FileRequired(),FileAllowed(['xlsx'])])
        submit = SubmitField('提交')

    upload_case.py

    from flask import  Flask,render_template,flash,session
    from demo.forms import UploadCaseForm
    import os,uuid
    
    app = Flask(__name__)
    app.secret_key='secret string'
    app.config['UPLOAD_PATH']=os.path.join(app.root_path,'uploads')
    
    
    @app.route('/basic',methods=['GET','POST'])
    def basic():
        form = UploadCaseForm()
        if form.validate_on_submit():
            f=form.case.data
            filename=random_filename(f.filename)
            f.save(os.path.join(app.config['UPLOAD_PATH'],filename))
            flash('Upload Success')
            session['filenames']=[filename]
            return "上传成功"
    
        return render_template('upload_case.html',form=form)
    
    def random_filename(filename):
        ext=os.path.split(filename)[1]
        new_filename=uuid.uuid4().hex+ext
        return new_filename
    
    if __name__=='__main__':
        app.run(debug=True)
  • 相关阅读:
    G. Yash And Trees 线段树 + dfs序 + bitset
    网络流最小割 H
    P2764 最小路径覆盖问题 网络流重温
    P4016 负载平衡问题 网络流重温
    D. Yet Another Subarray Problem 思维 难 dp更好理解
    J
    20190709 暑训 区间种类数 莫队的学习
    E
    线段树 离散化 E. Infinite Inversions E. Physical Education Lessons
    CbsPersist
  • 原文地址:https://www.cnblogs.com/kaerxifa/p/11858570.html
Copyright © 2011-2022 走看看