【发布时间】:2016-02-19 04:56:24
【问题描述】:
我不明白,我不明白。
在一个自行开发的 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),我认为一旦 formData.append() 接收到文件输入作为值,XMLHttpRequest 对象就会处理这个问题。
【问题讨论】:
标签: javascript python ajax cgi wsgi