Javascript mod_wsgi:读取发布的文件内容仍为空
我不明白,我不明白 在自行开发的PythonWeb框架中,我使用JavaScript向服务器发布了一个文件表单元素Javascript mod_wsgi:读取发布的文件内容仍为空,javascript,python,ajax,cgi,wsgi,Javascript,Python,Ajax,Cgi,Wsgi,我不明白,我不明白 在自行开发的PythonWeb框架中,我使用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);
var formData = new FormData();
formData.append('file', document.getElementById('file').files[0]);
var request = new XMLHttpRequest();
request.open("POST", url, true);
request.send(formData);
服务器sporting 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\u METHOD']
实际上是POST
至于用于编码的HTTP头(例如
multipart/form data
),我认为XMLHttpRequest
对象将在formData.append()
收到一个文件输入作为值后处理这个问题。好的,解决方案如下:
我无法解释,但文件表单字段在第一次读取时被清空,这是我偶然发现的。也许是个虫子,谁知道呢。
我假设它们会保持不变(像任何其他变量一样),并且可以多次读取
我忽略的是,事实上我已经多次向他们讲话。
因此,解决方案是首先将文件内容存储在一个变量中,然后多次使用该变量。能否显示所需更改的代码段?谢谢