首页 > 解决方案 > 烧瓶将文件上传到烧瓶而没有表单

问题描述

我希望能够在不使用典型的 HTML 表单的情况下从 javascript 上传我的文件,以便在将文件上传到 python 时不必刷新页面。

我没有成功获取我的文件request.files。我尝试了两种不同的版本,一种使用 HTML 表单,一种不使用。

当尝试使用 HTML 表单时,输出request.files是一个看起来像这样的 ImmutableMultiDict,ImmutableMultiDict([('file', <FileStorage: '^RUT.csv' ('text/csv')>)])而根据我的理解,它应该是一个字典。
这是代码:

<form method="POST" action="/get_dims" enctype="multipart/form-data" id="import_form">
                <input type="file" name="file" accept=".csv" id="training_set_import" value="import training set"/>
                <input type="submit" value="Submit">
</form>
@app.route("/get_dims", methods=["POST"])
def getDatasetDims():
    file_n = request.files
    print("Got it!")
    print(file_n)
    return "None"

我尝试过的另一种更可取的方法是使用 AJAX 的 javascript。执行此操作时,request.files返回一个空的 ImmutableMultiDict ,如下所示ImmutableMultiDict([])。这是我的代码:

$(function(){
    $("#training_set_import").change(function(){
      var file_name = $("#training_set_import").val();
      var form = $("#training_set_import").form;
      var data = new FormData(form);
      if (file_name !== ""){
        $.ajax({
          type: "POST",
          url:"/get_dims",
          enctype: "multipart/form-data",
          data: {"file": data},
          cache: false,
          processData: false,
          contentType: false
        });
      }
    });
});

python代码是一样的。

所以我的问题是,我怎样才能实现这个的 javascript 版本,以便我可以在 python 中操纵上传的 csv ?

标签: javascriptpythonhtmlpython-3.xflask

解决方案


好的,我在这里找到了一个线程来解决我的问题。这里是:如何在烧瓶中使用 ajax 调用上传文件 希望这可以帮助任何和我有同样问题的人!


推荐阅读