Flask如何处理表单中的文件和数据

时间:2016-12-23 07:09:28

标签: jquery ajax file flask

我正在尝试使用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),因为我需要在提交表单之前进行一些检查)。谢谢!

0 个答案:

没有答案