Я работаю с Flask, WTForms и Flask-WTF, чтобы сохранить файл, но файл всегда сохраняется как пустой файл.Ошибка не отображается.
Форма:
from flask_wtf import FlaskForm
from flask_wtf.file import FileField
from wtforms import StringField, SubmitField
class UserForm(FlaskForm):
username = StringField('u', validators=[InputRequired()])
email = StringField('e', validators=[InputRequired()])
password = StringField('c', validators=[InputRequired()])
signature = FileField('s')
save = SubmitField('a')
Маршрут / функция колбы:
@bp.route('/manage/user', methods=['GET', 'POST'])
@login_required
def manage_user():
form = UserForm()
action = 'create'
try:
if form.validate_on_submit():
if form.save.data:
print('request.method', request.method)
print('request.args', request.args)
print('request.form', request.form)
print('request.files', request.files)
# archivo = request.files['signature']
# archivo = request.files.items()[0]
archivo = form.signature.data
print(type(archivo))
if archivo:
image_data = archivo.read()
basedir = os.path.abspath(os.path.dirname(__file__))
filename = secure_filename(form.username.data+'.png')
full_dir = os.path.join(basedir, '..\\static\\img', filename)
print(sys.getsizeof(archivo))
archivo.save(full_dir)
return redirect(url_for('main.manage'))
except Exception as e:
print(e)
return render_template('manage_user.html', title=('Admon'), form=form, action=action)
HTML
<form action="" method="POST" role="form" class="form-horizontal" enctype="multipart/form-data">
{{ form.csrf_token() }}
<div class="form-group">
<label class="control-label col-sm-3">Firma</label>
<div class="col-sm-6">
{% if action=='create' %}
<!-- Other fields -->
{{ form.signature(placeholder="Firma", type="file", class="form-control", accept="image/*", required="True") }}
<img id="firmaimg" src="{{ url_for('static', filename='img/firma130x50_dummy.png') }}" alt="Firma" />
{{ form.save(class="btn btn-success btn-md") }}
{% endif %}
</div>
</div>
</form>
Операции печати показывают это:
Порядок отпечатков:
- Метод запроса
- Аргументы запроса
- Форма запроса
- Файлы запроса
- Тип переменной архива
Размердля archivo всегда 32, неважно, какое изображение я загружаю, всегда 32, поэтому с этого момента уже пусто, не могу понять, почему оно пустое.Я следую за примерами.
https://flask -wtf.readthedocs.io / en / latest / form.html