Итак, у меня есть HTML-форма с несколькими текстовыми полями ввода, но теперь я хочу включить загрузку файлов в том же виде.Flask text & file upload in the same form - Результаты в пустом словаре
Я видел в других сообщениях здесь, что использование объекта FormData будет выполнять эту работу для меня. Однако, когда я реализую его, dict, который я получаю в Flask, пуст.
Адрес электронной почты: Форма HTML. Кнопка, вызывающая действие, находится вне формы - я обрабатываю ее с помощью Ajax, поскольку я не хочу обновлять страницу.
<form action="{{ url_for('configure') }}" method="post" enctype="multiform/form-data" id="form_withtabs">
<div class="row">
<br>
<div class="col-lg-2">
<label>
<input type="text" id="input_username" name="username" class"form-control" placeholder="Username" >
</label>
</div>
<div class="col-lg-2">
<label>
<input type="password" name="password" class"form-control" placeholder="Password" />
</label>
</div>
<div class="col-lg-3">
<input class="pull-right" type="text" name="project_name" data-toggle="tooltip" data-placement="left" title="Select a name for the project" placeholder="Project Name" />
</div>
<div class="col-lg-5">
<input type="file" name="config_file" class="pull-right" />
</div>
</div>
</form>
var thisformData = new FormData($('#form_withtabs'));
$.ajax({
url: "/configure",
data: thisformData,
type: 'POST',
contentType: false,
cache: false,
processData: false,
async: false,
success: function(response) {
var $link_addr = $(response).filter('#link').html();
$('body').removeClass("loading");
$(".alert-danger").html($link_addr);
$(".alert-danger").show();
return true;
}
И это функция, которая обрабатывает запрос.
@app.route('/configure', methods=['POST'])
def configure():
print request.form
if request.method == 'POST':
#request the file from
file = request.files['config_file']
if file:
filename = secure_filename(file.filename)
#app.config["UPLOAD_FOLDER"] is defined in flask_define.py
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
Результат, который я получаю от нажатия представить это
ImmutableMultiDict([])
И 400 Bad Request
Может кто-нибудь помочь мне найти мою ошибку?