如何从 FormData 请求多个参数?
How to request several arguments from FormData?
这是 的后续问题:我在那里学习了如何上传文件、处理文件,然后使用 AJAX
和 FormData
.例如,如果我有一个这样的文件 data.csv
:
A,B,C
1,3,4
2,4,2
我可以使用 AJAX
和 FormData
传递它
<form method="POST" enctype="multipart/form-data" id="fileUploadForm">
<div class="custom-file">
<input id="myfile" name="myfile" type="file" class="custom-file-input">
<label for="myfile" class="custom-file-label">
Choose file...
</label>
</div>
</form>
// the javascript part
var form = $('#fileUploadForm')[0];
var formdata = new FormData(form);
$.ajax({
type: "POST",
enctype: 'multipart/form-data',
url: "/_get_table",
data: formdata,
processData: false,
contentType: false,
cache: false,
timeout: 600000,
并得到:
然后我可以使用
轻松获取它
file = request.files['myfile']
并使用
将其转换为数据框
df = pd.read_csv(file)
我现在的问题是如果我想传递额外的参数(不仅是文件),我会怎么做。 建议使用
var formdata = new FormData();
formdata.append("myform", form)
formdata.append("myvalue", 10)
这给出了
和headers
我现在如何正确收集信息?我可以这样得到myvalue
val = request.form['myvalue']
但我还没有找到访问和阅读 myfile
的方法。如果我例如尝试
file = request.files['myform']
我明白了
werkzeug.exceptions.HTTPException.wrap..newcls: 400 Bad
Request: KeyError: 'myform'
我也尝试了 here 的其他解决方案,但没有成功。
问题是因为您没有将文件正确添加到 FormData
。
当您使用 multipart/form-data
时,您的负载应该是一个文件和一些 form-data
。但是在您的屏幕截图中,如您所见,您添加了一个 object
.
要解决这个问题,其实你可以直接把你的值加到原来的FormData
:
var formdata = new FormData(form);
formdata.append("myvalue", 10);
这是 AJAX
和 FormData
.例如,如果我有一个这样的文件 data.csv
:
A,B,C
1,3,4
2,4,2
我可以使用 AJAX
和 FormData
<form method="POST" enctype="multipart/form-data" id="fileUploadForm">
<div class="custom-file">
<input id="myfile" name="myfile" type="file" class="custom-file-input">
<label for="myfile" class="custom-file-label">
Choose file...
</label>
</div>
</form>
// the javascript part
var form = $('#fileUploadForm')[0];
var formdata = new FormData(form);
$.ajax({
type: "POST",
enctype: 'multipart/form-data',
url: "/_get_table",
data: formdata,
processData: false,
contentType: false,
cache: false,
timeout: 600000,
并得到:
然后我可以使用
轻松获取它file = request.files['myfile']
并使用
将其转换为数据框df = pd.read_csv(file)
我现在的问题是如果我想传递额外的参数(不仅是文件),我会怎么做。
var formdata = new FormData();
formdata.append("myform", form)
formdata.append("myvalue", 10)
这给出了
和headers
我现在如何正确收集信息?我可以这样得到myvalue
val = request.form['myvalue']
但我还没有找到访问和阅读 myfile
的方法。如果我例如尝试
file = request.files['myform']
我明白了
werkzeug.exceptions.HTTPException.wrap..newcls: 400 Bad Request: KeyError: 'myform'
我也尝试了 here 的其他解决方案,但没有成功。
问题是因为您没有将文件正确添加到 FormData
。
当您使用 multipart/form-data
时,您的负载应该是一个文件和一些 form-data
。但是在您的屏幕截图中,如您所见,您添加了一个 object
.
要解决这个问题,其实你可以直接把你的值加到原来的FormData
:
var formdata = new FormData(form);
formdata.append("myvalue", 10);