我正在尝试使用Python 2.7.6中的Flask 0.11.1读取包含上传文件的表单。
$ ls -al /foo.txt
-rw-r--r-- 1 root root 0 Dec 23 07:03 /foo.txt
我尝试过的几种方法给出了以下结果:
(1)纯HTML表单。它如下所示。 app.route("/registration_submission")
def registration_submission():
print request.files
print request.form
print request.data
# sth else...
字段根据the W3S Note包含,name
设置为enctype
:
multipart/form-data
<form id="register-form" action="/registration_submission" method="post" enctype="multipart/form-data">
<div><input type="text"id="firstname" name="firstname"></div>
<div><input type="text"id="lastname" name="lastname"></div>
<div><input type="file" id="resume" name="resume"></div>
<button type="submit" id="send">Submit</button>
</form>
request.form['filename']
为空。根据{{3}}和this,它通常为空。 (2)jQuery AJAX POST 。除了上面使用的HTML表单,我还将AJAX processData设置为false。
request.data
$.ajax({
type: "POST",
url: "/registration_submission",
data: submission_data,
processData: false,
error: function(response, error) {
;
},
success: function(data, code, jqxhr) {
;
}
});
被submission_data
获得,则:
var submission_data = $('#form').serialize()
为空request.files
包含除上传文件以外的所有其他信息,格式为request.form
为空。但是如果我在调用request.data
后调用它,那么request.data是一个格式正确的url样式字符串request.get_data()
,那么:
var submission_data = new FormData($('#form')[0])
为空request.files
包含混乱的编码字符request.form
返回凌乱的模糊词典request.form.to_dict()
为空。如果我在调用request.data
后查找request.data
,则似乎request.get_data()
包含几千行信息,其中包含几乎整个html页面。 是否有想法制作包含可在Flask中检索的文件和数据的jQuery AJAX表单? (我不能使用选项(1),因为我需要在提交表单之前进行一些检查)。谢谢!