在App Engine中处理文件上传(Python)

0 投票
4 回答
1159 浏览
提问于 2025-04-16 02:45

我正在尝试使用应用引擎和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)

我不确定这是不是最好的解决办法,但看起来是有效的。

撰写回答