提交FileField后文件始终为空

时间:2019-04-24 09:41:58

标签: python flask flask-wtforms filefield

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

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

表单类:

$(document).ready(function (e) {
  $("#del").on('submit',(function(e) {
    e.preventDefault();
    $.ajax({
          url: "delete.php",
      type: "POST",
      data:  new FormData(this),
      contentType: false,
          cache: false,
      processData:false,
      beforeSend:function(){
         return confirm("Are you sure you want to delete this?");
      },
      success: function(data)
        {

         alert("Delete Successful");
    window.location.reload(); 

        },
        error: function(e) 
        {

        }           
     });
  }));
});

渲染类:

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')

HTML:

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


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

我无法访问文件数据(以后必须存储,但是要设法获取文件之后)

3 个答案:

答案 0 :(得分:0)

尝试:

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

或:

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

尝试一次此代码:

SomeProp