为什么它们不可用
他们当然是
logging.error(self.request.POST['uploadimage'].keys)
印刷
ERROR 2013-06-22 05:47:46,605 FileuploadHandler.py:29] <bound method FieldStorage.keys of FieldStorage(u'uploadimage', u'30.jpg')>
调用此方法会TypeError
出错
TypeError: not indexable
为了不出现此错误,对象的内容类型应为application/x-www-form-urlencoded
或mutlipart/*
。对于像图像或音频文件这样的单个文件,内容类型将是文件的 mimetype,例如 image/jpeg、audio/ogg 等,因此方法__contains__
, has_keys
, keys
, __len__
,__getitem__
将为单个文件引发 TypeError。
为什么 dir 中没有列出 value 属性
因为它不是真正的属性。这是 cgi.FieldStorage 的__getattr__
方法。
def __getattr__(self, name):
if name != 'value':
raise AttributeError, name
if self.file:
self.file.seek(0)
value = self.file.read()
self.file.seek(0)
elif self.list is not None:
value = self.list
else:
value = None
return value
因此除非您实现自己的方法dir()
,否则不会知道它__dir__
如果您在尝试访问虚拟值属性时遇到以下错误
AttributeError: 'unicode' object has no attribute 'value'
然后您需要将 HTML 表单的 enctype 设置为multipart/form-data
.