javascript - 烧瓶将文件上传到烧瓶而没有表单
问题描述
我希望能够在不使用典型的 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 ?
解决方案
好的,我在这里找到了一个线程来解决我的问题。这里是:如何在烧瓶中使用 ajax 调用上传文件 希望这可以帮助任何和我有同样问题的人!
推荐阅读
- angular - 我可以在 Angular 中使用带有柏树的字符串插值吗?
- ionic-framework - 如何自定义 Ionic 本地通知
- node.js - 无法使用 OpenSuse Leap 15.1 中的电子锻造和电子安装程序为目标 win32 构建
- excel - 添加/删除行但仅一次时的VBA消息框
- javascript - 在javascript中给出2个函数的序列
- arrays - 数组没有通过在 excel vba 中使用函数来获取值
- python - 如何通过 FastAPI 后端上的 websocket 连接提供实时数据库更新
- python - gensim.models.docvecs.doctag_syn0norm 的属性错误
- android - 自动连接到父按钮不可见
- python - 使用 Python 请求向本地主机发送 POST 请求