gpt4 book ai didi

javascript 对 Flask-python 的多个 Ajax 请求 - 仅限!一个收到

转载 作者:行者123 更新时间:2023-11-30 19:57:36 24 4
gpt4 key购买 nike

我正在尝试使用输入文件类型遍历多个表单并将它们AjaxFlask

javascript 看起来像这样:-

我在变量 var upFC = document.getElementsByClassName('uploadImage'); 下有一个表单列表

每个表单看起来像这样:-

<form method=​"post" action=​"/​upload" enctype=​"multipart/​form-data" id=​"f_x" class=​"uploadImage">
<input type=​"file" id=​"u_x">​
<input type=​"submit" value=​"Submit" id=​"s_x">​
</form>​`

在哪里x = [ 0 - 100 ]

然后将我使用此方法的文件 Ajax

for (i = 0; i < upFC.length; i++) {

var cFile = upFC[i].elements[0].files;
var fileName = upFC[i].elements[0].value;

const fd = new FormData();
fd.append('file', cFile[i], rightName);
const fdx = new XMLHttpRequest();
fdx.open('post' , "/uploadIds" , true);
fdx.send(fd);
}

Flask 代码如下所示:-

@app.route('/uploadIds', methods=['POST' , 'GET'])
def handle_uploadIds():
d = os.path.join(root,'uploads/')
allImages = request.files.to_dict();
print("\n\n activated - ids \n\n ")
print("\n\n all images \n\n == > ", allImages )



for file in allImages:
print(f"----\n\n {allImages[file]} \n\n")
fileName = allImages[file].filename
dest = "/".join([d, fileName ])
print(f"\n\n upload 1 is active :{fileName}\n\n")
allImages[file].save(dest)

return '', 204

无论我在 flask 上尝试什么方法,我总是正确地得到第一个文件,其余的循环都是空的..没有错误

我还在 Javascript 端添加了日志,以查看 formData 是否在每次循环时发送正确的文件,是的。

出于某种原因,flask 收到了第一个文件,而没有收到其余的文件。

在发送之前应用此代码跟踪 formData 之后。

for (var pair of fd.entries()) {
console.log(pair[0]+ ', ' + pair[1]);}
}

在 chrome 控制台上我得到了这个

file, [object File]
2 file,

根据我的代码从 flask 打印输出

     all images

== > {'file': <FileStorage: 'PHNZIH1062_id.png' ('image/png')>}
----
<FileStorage: 'PHNZIH1062_id.png' ('image/png')>
activated - ids
all images
== >
upload 1 is active :PHNZIH1062_id.png
{}

activated - ids
all images
== > {}
127.0.0.1 - - [13/Dec/2018 21:06:15] "POST /uploadIds HTTP/1.1" 204 -
127.0.0.1 - - [13/Dec/2018 21:06:15] "POST /uploadIds HTTP/1.1" 204 -
127.0.0.1 - - [13/Dec/2018 21:06:15] "POST /uploadIds HTTP/1.1" 204 -

我尝试过的方法:

  • request.files.getlist('文件'):
  • request.files.to_dict():
  • request.files.items():

我尝试过的一些突出显示的方法: all 3 methods in this link

我不确定问题是在 flask 还是在 ajax 但可能是在 flask 的代码中

最佳答案

原来很简单,毕竟是客户端,我要做的就是改变这个

var cFile = upFC[i].elements[0].files;

var cFile = upFC[0].elements[0].files;

因为那是 [file object] 位置。

关于javascript 对 Flask-python 的多个 Ajax 请求 - 仅限!一个收到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53768966/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com