zoukankan      html  css  js  c++  java
  • flask中的表单文件上传

    在表单中上传文件时,一定要加入 enctype="multipart/form-data" 属性

    为什么要加入这个属性呢:

    enctype就是encodetype就是编码类型的意思。

    multipart/form-data是指表单数据有多部分构成,既有文本数据,又有文件等二进制数据的意思。

    需要注意的是:默认情况下,enctype的值是application/x-www-form-urlencoded,不能用于文件上传,只有使用了multipart/form-data,才能完整的传递文件数据。

    application/x-www-form-urlencoded只能上传文本格式的文件,而multipart/form-data是讲将文件以二进制的形式上传,可以实现多种文件的上传

    一般获取上传的数据可以用request.form[],[]中填入name属性

    而在视图函数中获取表单上传的文件可以用request.file.get()方法,get中填name属性

    而上传文件到指定文件夹,有几种方法

    我这是使用的是: 文件.save(文件路径)

    数据库表模型和视图函数如下:

    class Users(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(48), unique=True)
    sex = db.Column(db.String(12))
    pic = db.Column(db.String(48))

    @app.route('/index/', methods=['GET', 'POST'])
    def index():
    if request.method == 'GET':
    return render_template('index.html')
    if request.method == 'POST':
         # 获取上传的文件和数据
    icons = request.files.get('icons')
    name = request.form['name']
    sex = request.form['sex']
    # 指定上传路径
    UPLOAD_DIC = 'static/upload'
    # 拼接文件全路径
    file_path = os.path.join(UPLOAD_DIC,icons.filename)
    # 上传文件到指定路径
    icons.save(file_path)
    user= Users(name=name, sex=sex, pic=file_path)
    db.session.add(user)
    db.session.commit()
    msg = '上传成功'
    return render_template('index.html',msg=msg,pic = file_path)
    模板如下:
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>上传图片</title>
    </head>
    <body>
    <form action="" method="post" enctype="multipart/form-data" >
    {% if pic %}
    <div >
    <img style=" 200px;height: 100px" src="/{{ pic }}/ " alt="">
    </div>
    {% endif %}
    <label for="name">姓名</label>
    <input type="text" id="name" name="name">
    <label for="sex"></label>
    <br>
    男<input type="radio" name="sex" id="sex" value="男">
    女<input type="radio" name="sex" id="sex" value="女">
    <br>
    <input type="file" name="icons">
    <br>
    <input type="submit" value="提交">
    </form>
    </body>
    </html>
  • 相关阅读:
    用C++做微信公众平台开发的后台开发时,用sha1加密验证的方法
    UART Receive FIFO and Receive Timeout
    Compile cpp File Manually without IDE under Mingw Environment
    html5 返回当前地理位置的坐标点(经纬度)
    逆袭!花两个月吃透这份“MySQL宝典”拿到字节offer
    MySQL约束的概述
    2020-11-28
    人工智能能力提升指导总结
    年轻就该多尝试,教你20小时Get一项新技能
    MySQL~存储过程基本操作
  • 原文地址:https://www.cnblogs.com/Jokerguigui/p/11535196.html
Copyright © 2011-2022 走看看