【发布时间】:2014-06-07 14:35:24
【问题描述】:
Google App Engine documentation 使得获取上传文件的内容 (self.request.get('user_file')) 看起来非常简单,但是虽然我可以使用 old_dev_appserver.py 执行此操作,但我无法使用当前的 dev_appserver.py (v1.9.2 )。
这是一个生成传入数据的简单示例:
<form name="myform" action="http://localhost:8080/sync?cmd=tester" enctype="multipart/form-data" method="post">
Username: <input type="file" name="user_file" />
<input type="submit" value="Submit" />
</form>
在 old_dev_appserver.py 中,可以通过
self.request.get('user_file')在 GAE 中获取文件,但不能使用最新的 (1.9.2) dev_appserver.pyWebApp2 says "上传的文件可作为 cgi.FieldStorage(参见 cgi 模块)实例直接在 request.POST 中使用。"但是,
request.POST是空的,cgi.FieldStorage()也不包含 'user_file'。
奇怪的是,如果我打印出 self.request.params,我确实在 UnicodeMultiDict 中看到了一个元素 (u'user_file', FieldStorage(u'user_file', u'myfile.ico'))。但是,当我尝试通过命名访问或仅迭代参数来获取该元素时,我无法获得它。即使我做一个Len(self.request.params) 我得到的比我看到的少一个,并且'user_file'元素丢失了。如果我使用 old_dev_appserver 执行此操作,Len(self.request.params) 是正确的。
如何获取 user_file?
【问题讨论】:
标签: python google-app-engine file-upload