我有一个网页(web-app),允许用户将文件上传到服务器。服务器端是Python Quart(异步Flask),在Nginx之后是hypercorn服务器。
问题,我无法上传多个文件。单个文件上传没有任何问题,一切正常。
我阅读了与此相关的所有堆栈溢出帖子,并且尝试了无数建议的解决方案。这种情况有所不同,当使用单个文件提交表单时,文件对象包含在请求的“文件”部分中,但是当提交多个文件时,请求的“文件”部分为空,并且文件-对象包括在“形式”使用正确的密钥,并且它的值是一个“字节”的对象。
在HTML表格是:
body {
height: 100vh;
max-height: 100vh;
}
textarea {
width: 100%;
height: auto;
}
使用JS将表单添加到客户端页面,并使用Fetch请求异步提交表单。 请求标头是:
<textarea></textarea>
<textarea></textarea>
<button>POST</button>
该请求有效载荷是:
<form method="POST"
action="/upload"
enctype="multipart/form-data">
<div>
<input value="xyz" name="number" type="hidden">
<textarea name="message" placeholder="write message"></textarea>
</div>
<div>
<input name="attach" multiple="" type="file">
<input value="send" type="submit">
</div>
</form>
在服务器上:
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US;q=0.7,en;q=0.3
Connection: keep-alive
Content-Length: 14563
Content-type: multipart/form-data; boundary=…-5168
Cookie:
DNT: 1
Host: www.example.com
origin: https://www.example.com
Referer: https://www.example.com/mypage.html
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linu…) Gecko/20100101 Firefox/62.0
提交单个文件时,在上载中找到“附加”键,“打印”显示正确的multidict对象。 “ attach”键不在form_data中。提交两个或更多文件时,上传的文件长度为0,然后在form_data中找到“ attach”键,并以bytes对象作为值。
我确定问题是由“ await request.files”引起的,但我不知道为什么或如何解决问题。