在App Engine中处理文件上传(Python)
我正在尝试使用应用引擎和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
我该如何安全地检查上传的文件是否存在,以便在处理程序中执行其他操作之前进行确认呢?
谢谢大家的帮助。
祝好,
Robin
4 个回答
0
我有一个关于如何在GAE上上传文件的小教程。你可以在这里找到:http://verysimplescripts.blogspot.jp/。里面还有一个完全可用的解决方案。
1
这样怎么样:
fileupload = self.request.POST["content"]
if fileupload is None:
return self.error(400)
0
好吧,我用这个方法搞定了:
import cgi
.
.
fileupload = self.request.POST["content"]
if not isinstance(fileupload, cgi.FieldStorage):
return self.error(400)
我不确定这是不是最好的解决办法,但看起来是有效的。