zoukankan      html  css  js  c++  java
  • 五十六:flask文件上传之上传文件与访问上传的文件

    实现上传文件

    1、在form表单中,需指定enctype="multipart/form-data",且文件上传的input标签type="file"
    2、在后台获取上传的文件request.files.get('文件上传input标签的name属性值')
    3、保存文件之前,先使用werkzeug.utils.secure_filename来对文件名进行一次过滤,避免安全问题
    4、获取到上传的文件后,使用 文件对象.save(路径)保存文件

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>上传文件</title>
    </head>
    <body>
    <form action="" method="post" enctype="multipart/form-data">
    <table>
    <tbody>
    <tr>
    <td>头像:</td>
    <td><input type="file" name="avatar"></td>
    </tr>
    <tr>
    <td>描述:</td>
    <td><input type="text" name="desc"></td>
    </tr>
    <tr>
    <td></td>
    <td><input type="submit" value="点击提交"></td>
    </tr>
    </tbody>
    </table>
    </form>
    </body>
    </html>

    import os
    from flask import Flask, request, render_template
    from werkzeug.utils import secure_filename

    app = Flask(__name__)


    @app.route('/upload/', methods=['GET', 'POST'])
    def upload():
    if request.method == 'POST':
    desc = request.form.get('desc') # 获取描述信息
    avatar = request.files.get('avatar') # 获取文件:request.files
    filename = secure_filename(avatar.filename) # 防黑客在文件名上做手脚:../../User/xxx/.bashrc
    avatar.save(os.path.join('files', filename)) # 保存文件
    print(desc)
    return '文件上传成功'
    return render_template('upload.html')


    if __name__ == '__main__':
    app.run(debug=True)

    获取文件

    定义一个url与视图函数,来获取指定文件,在这个视图函数中,使用flask.send_from_directory(目录,文件名)来获取

    import os
    from flask import Flask, request, render_template, send_from_directory
    from werkzeug.utils import secure_filename

    app = Flask(__name__)


    @app.route('/get_file/<filename>/')
    def get_file(filename):
    return send_from_directory('files', filename) # 文件路径,文件名
  • 相关阅读:
    Beetl模板 [记录]
    wx 小程序开发 [记录]
    高德定位获取省市区[记录]
    vue 学习记录 [记录]
    正则表达+验证 [记录]
    倒计时60s短信 [记录]
    @media [记录]
    JSON + Ajax [记录]
    Webstorm [记录]
    JQ 组合代码 [记录]
  • 原文地址:https://www.cnblogs.com/zhongyehai/p/11845654.html
Copyright © 2011-2022 走看看