我不理解,我不明白。
在自行开发的Python Web框架中,我使用JavaScript将文件表单元素发布到服务器。
var formData = new FormData();
formData.append('file', document.getElementById('file').files[0]);
var request = new XMLHttpRequest();
request.open("POST", url, true);
request.send(formData);
运行mod_wsgi的服务器接收如下请求:
if environ['REQUEST_METHOD'] == 'POST':
post_env = environ.copy()
post_env['QUERY_STRING'] = ''
form = cgi.FieldStorage(
fp=environ['wsgi.input'],
environ=post_env,
keep_blank_values=True)
然后,当我想访问表单字段的内容以将其保存到文件时,以下内容将返回一个空结果:
form['file'].file.read()
(为简单起见,所有代码都已编辑)
让我感到困惑的是,表单字段将显示正确的文件名和MIME类型,只有file.read()
仍为空。
此外,来自其他输入文本字段的所有其他信息都可以访问并且可以访问。
我还检查了environ['REQUEST_METHOD']
实际上是POST
。
对于用于编码的HTTP标头(例如multipart/form-data
),我认为XMLHttpRequest
对象将在formData.append()
接收文件输入作为值时处理。< / p>
答案 0 :(得分:0)
好的,这是解决方案:
我无法解释它,但文件表单字段在第一次读取时被清空,我意外地发现了。也许是一个错误,谁知道。 我认为它们将保持原样(与任何其他变量一样)并且可以多次读取。
我忽略的是我实际上已经多次解决了这些问题。 因此,解决方案是首先将文件的内容存储在变量中,然后多次使用。