我希望能够在不使用典型的 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?
答案 0 :(得分:0)
好的,我在这里找到了一个解决我问题的线程。这是:How to upload a file using an ajax call in flask 希望这能帮助任何和我有同样问题的人!