zoukankan      html  css  js  c++  java
  • flask 文件上传

    test_flask.py

    from flask import Flask,render_template,request,redirect,url_for,flash
    from werkzeug.utils import secure_filename      #导入安全函数
    import os
    
    app = Flask(__name__)
    app.config['SECRET_KEY'] = os.urandom(24)
    
    ALLOWED_EXTENSIONS = set(['txt', 'png', 'jpg', 'jpeg', 'gif'])      #设置可以上传的文件
    
    def allowed_file(filename):
        return '.' in filename and filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS    #返回结果为false或者true [1]为获取的文件的后缀名
    
    
    
    @app.route('/')
    def hello_world():
        return 'Hello World!'
    
    
    @app.route('/upload/',methods=['GET','POST'])
    def upload():
        if request.method == 'POST':
            f = request.files['file']
            #print (f)
            if f and allowed_file(f.filename):  
                app.config['UPLOAD_FOLDER'] = os.path.join(os.path.dirname(__file__),'static/uploads')    #设置上传文件到服务器的路径
                #print(app.config['UPLOAD_FOLDER'])
                if not os.path.exists(app.config['UPLOAD_FOLDER']):            #如果路径不存在则创建
                    os.makedirs(app.config['UPLOAD_FOLDER'])
                upload_file_name = os.path.join(app.config['UPLOAD_FOLDER'],f.filename)  #上传的文件保存的名称,如果这里用secure_filename函数,对于中文文件,最后只保存为k后缀名
                #print(secure_filename(f.filename))
                f.save(upload_file_name)
                flash("文件上传成功", 'ok')
                return redirect(url_for('upload'))
            flash("文件上传失败,无效的格式 %s" % f.filename.rsplit('.', 1)[1],'err')
            return redirect(url_for('upload'))
        return render_template('upload.html')
    
    
    if __name__ == '__main__':
        app.run(debug=True)

    upload.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <h2>文件上传示例</h2>
        <form action="" enctype='multipart/form-data' method='POST'>
            <input type="file" name="file">
            <input type="submit" value="上传">
        </form>
        {% for v in get_flashed_messages(category_filter=['err']) %}
            <p style="color:red;">{{ v }}</p>
        {% endfor %}
        {% for v in get_flashed_messages(category_filter=['ok']) %}
            <p style="color:green;">{{ v }}</p>
        {% endfor %}
    </body>
    </html>
  • 相关阅读:
    存储器管理
    进程与线程
    进程间通信 IPC(Inter-Process Communication)
    进程的同步与互斥
    【bzoj4806~bzoj4808】炮车马后——象棋四连击
    【bzoj1013】[JSOI2008]球形空间产生器sphere
    【bzoj5427】最长上升子序列(贪心+LIS)
    NOIP2018没有什么新闻
    【bzoj3170】[Tjoi2013]松鼠聚会(数学题)
    【bzoj5170】Fable(树状数组)
  • 原文地址:https://www.cnblogs.com/FRESHMANS/p/8556923.html
Copyright © 2011-2022 走看看