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>
  • 相关阅读:
    VScode 修改中文字体
    missing KW_END at ')' near '<EOF>'
    SQL inner join, join, left join, right join, full outer join
    SQL字符替换函数translater, replace
    SQL COOKBOOK SQL经典实例代码 笔记第一章代码
    sqlcook sql经典实例 emp dept 创建语句
    dateutil 2.5.0 is the minimum required version python
    安装postgresql后找不到服务 postgresql service
    Postgres psql: 致命错误: 角色 "postgres" 不存在
    【西北师大-2108Java】第十六次作业成绩汇总
  • 原文地址:https://www.cnblogs.com/Jokerguigui/p/11535196.html
Copyright © 2011-2022 走看看