我正在尝试使用app engine和python实现文件上传解决方案。我正在努力检查是否有实际附加到表单的文件。我正在设置enctype =“multipart / form-data”,原则上它可以工作。我的python处理程序如下所示:
fileupload = self.request.POST["content"]
if not fileupload:
return self.error(400)
如果没有附加文件,则此方法有效。但是,如果附加了文件,则会出现以下错误:
File "D:\eclipse_dev\workspace\test\src\handlers.py", line 351, in post
if not fileupload:
File "C:\Python25\lib\cgi.py", line 633, in __len__
return len(self.keys())
File "C:\Python25\lib\cgi.py", line 609, in keys
raise TypeError, "not indexable"
TypeError: not indexable
在处理程序中执行任何其他操作之前,如何安全地检查上传是否存在?
感谢您的帮助。
此致 罗宾
答案 0 :(得分:1)
怎么样:
fileupload = self.request.POST["content"]
if fileupload is None:
return self.error(400)
答案 1 :(得分:0)
好吧,我使用了这个:
import cgi
.
.
fileupload = self.request.POST["content"]
if not isinstance(fileupload, cgi.FieldStorage):
return self.error(400)
不确定这是否是最佳解决方案,但似乎有效。
答案 2 :(得分:0)
App Engine的self.request.get()方法处理POST数据就好了:
请改为尝试:
def post(self):
fileupload = self.request.get('content')
if not fileupload:
self.error(400)
else:
# Proceed normally
答案 3 :(得分:0)
我有一个关于向GAE上传文件的小教程。 http://verysimplescripts.blogspot.jp/ 还包括一个完全可行的解决方案。