mod_wsgi:读取POSTed文件内容保持为空
mod_wsgi: Reading POSTed file content remains empty
我不明白,我不明白。
在一个自行开发的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);
服务器sportsmod_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
对象就会处理它。
好吧,这是解决方案:
我无法解释,但文件表单字段在第一次读取时被清空,这是我偶然发现的。也许是个虫子,谁知道呢。我假设它们会保持不变(就像任何其他变量一样),并且可以被多次读取。
我忽略的是,事实上我已经向他们讲了好几次了。因此,解决方案是首先将文件的内容存储在一个变量中,然后多次使用该变量。
相关文章:
- 如何播放部分音频文件
- 从桌面读取python文件时高亮显示代码
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何使用WCF服务和javascript表单post上传.doc文件
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 如何在生成下载文件时显示加载动画
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 正在SharePoint 2013母版页中添加JQuery移动文件
- 如何在php文件中获取$.post-ajax传递的值
- 直接下载文件,而不是从window.open(url)
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 使用压缩的JavaScript文件(不是运行时压缩)
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- Javascript运行php文件,然后下载文件
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 我应该如何从xml文件构建一个javascript页面
- 通过Ajax将JavaScript函数传递给PHP文件