【问题标题】:File is always empty after submiting FileField提交 FileField 后文件始终为空
【发布时间】:2019-09-13 13:44:41
【问题描述】:

我有一个表单,我需要收集一些文本数据和一个文件。提交后,textFields 很好,但 FileField 似乎是空的。

验证器 FileRequired 声称该字段为空,如果我删除它,它确实是 NoneType。

表单类:

from wtforms import Form, StringField,validators,SubmitField,DateField
from wtforms.fields.html5 import DateField
from flask_wtf.file import FileField, FileRequired,FileAllowed
from flask_wtf import FlaskForm
from flask import flash
import baseDatos

class  AnadirForm(FlaskForm):
    id=StringField('id')
    nombre=StringField('nombre',[validators.InputRequired()])
    volumen=StringField('volumen',[validators.InputRequired()])
    fecha= DateField('fecha',[validators.InputRequired()])
    file = FileField('Introduce Gcode',validators=[FileRequired()])
    submit = SubmitField('Post')

渲染类:

@app.route("/",methods=['GET', 'POST'])
def main():
    primeraForm=AnadirForm(request.form)


    if(primeraForm.validate_on_submit()):
        print(primeraForm.file.data)

HTML:

<form method="POST" action="/" enctype="multipart/form-data">
            <fieldset class="form-group">
            <div class="hueco col-xs-7">
                {{form.hidden_tag()}}
                {{form.id(class="form-control",placeholder="Id")}}
            </div>
            <div class="hueco col-xs-7">
                {{form.hidden_tag()}}
                {{form.nombre(class="form-control",placeholder="Nombre")}}
            </div>

            <div class="hueco col-xs-7">
                {{form.hidden_tag()}}
                {{form.volumen(class="form-control",placeholder="Volumen")}}
            </div>
            <div class="hueco col-xs-7">
                {{form.hidden_tag()}}
                {{form.fecha(class="form-control",placeholder="Fecha")}}
            </div>
             <div>
                {{form.hidden_tag()}}
                {{form.file(placeholder="File")}}
            </div>
            </fieldset>
            <div class="form-group">
            {{ form.submit(class="btn btn-primary") }}
        </div>
        </form>

我无法访问文件数据(稍后我将不得不存储,但在我设法获取文件之后)

【问题讨论】:

    标签: python flask flask-wtforms filefield


    【解决方案1】:

    尝试此代码一次:

    <form method="POST" action="" enctype="multipart/form-data">
        {{form.hidden_tag()}}
        <fieldset class="form-group">
            <div class="hueco col-xs-7">
                
                {{form.id(class="form-control",placeholder="Id")}}
            </div>
            <div class="hueco col-xs-7">
                {{form.nombre(class="form-control",placeholder="Nombre")}}
            </div>
    
            <div class="hueco col-xs-7">
                {{form.volumen(class="form-control",placeholder="Volumen")}}
            </div>
            <div class="hueco col-xs-7">
                {{form.fecha(class="form-control",placeholder="Fecha")}}
            </div>
            <div>
                {{form.file(placeholder="File")}}
            </div>
        </fieldset>
        <div class="form-group">
        {{ form.submit(class="btn btn-primary") }}
        </div>
    </form>
    

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题。对我有用的是用MultipleFileField() 替换FileField(),然后调整数据处理,因为你得到一个文件列表而不仅仅是一个文件。

      我不知道这个错误是从哪里来的,这对我来说似乎很奇怪,因为 FileField 在另一种情况下对我有用,尽管没有真正的区别。

      【讨论】:

        【解决方案3】:

        试试:

        form = AnadirForm(request.POST or None, request.FILES or None)
        

        或:

        if request.method == 'POST':        
            file = request.files['file_name']
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-11-12
          • 1970-01-01
          • 1970-01-01
          • 2022-10-13
          • 2019-04-19
          • 2016-02-01
          • 1970-01-01
          • 2013-09-04
          相关资源
          最近更新 更多