Редактировать
Если я вызываю request.files['file']
, я получаю объект файла, но form.validate_on_submit()
по-прежнему не удается. Почему происходит сбой, если в запросе есть файловый объект?
У меня есть три файла:
forms.py
from flask_wtf import FlaskForm
from flask_wtf.file import FileField, FileRequired
class ExcelForm(FlaskForm):
excel_file = FileField(validators=[
FileRequired()
])
webapp.py
from flask import Flask, render_template, redirect, url_for, request
from forms import ExcelForm
import pandas as pd
app = Flask(__name__)
app.config['SECRET_KEY'] = '314159265358'
@app.route('/', methods=['GET', 'POST'])
def upload():
form = ExcelForm(request.form)
if request.method == 'POST' and form.validate_on_submit():
df = pd.read_csv(form.excel_file.data)
print(df.head())
return redirect(url_for('hello', name=form.excel_file.data))
return render_template('upload.html', form=form)
@app.route('/hello/<name>')
def hello(name):
return 'hello' + name
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5000)
шаблоны \ upload. html
{% extends "layout.html" %}
{% block content %}
<form method = "POST" enctype = "multipart/form-data">
{{ form.hidden_tag() }}
<input type = "file" name = "file" />
<input type = "submit"/>
</form>
{% endblock content %}
Я могу получить доступ localhost:5000/upload
без вопросы. Я нажимаю кнопку «Обзор», выбираю свой файл, затем нажимаю кнопку «Отправить».
В функции webapp.py
upload
, form.validate_on_submit()
завершается ошибкой и выдает ошибку «1033 *». Может кто-нибудь сказать мне, что я делаю неправильно?
Я не хочу сохранять файл локально, чтобы прочитать его позже.