【发布时间】:2011-08-08 20:57:18
【问题描述】:
以下数据已上传到我的 GAE 应用程序 -
我该怎么做
- 仅获取包含文件的字段
- 获取上传文件的文件名?
【问题讨论】:
以下数据已上传到我的 GAE 应用程序 -
我该怎么做
【问题讨论】:
获取仅包含文件的字段
import cgi
values = self.request.POST.itervalues()
files = [v for v in values if isinstance(v, cgi.FieldStorage)]
获取上传文件的文件名
filenames = [f.filename for f in files]
编辑:更正了 sn-p,现已测试 :)
【讨论】:
File "/base/data/home/apps/picasa2vkontakte/1.352422470709739983/picasa2vkontakte.py", line 138, in post files_arguments.extend(v for v in values if isinstance(v, cgi.FieldStorage))
for single_file in files: len(single_file)/(1024.0*1024.0) 返回 not indexable 错误。以及如何获取文件内容以将其存储在数据存储中? photo_file.file = db.Blob(single_file)? (找不到任何有关文件及其属性的文档,例如 .filename)
contents = single_file.value。然后获取 len 的内容。文档:epydoc.sourceforge.net/stdlib/cgi.FieldStorage-class.html
假设数据是使用表单发布的,对于#2,请参阅Get original filename google app engine
对于 #1,您可以遍历 self.request.POST 多字典并查看任何看起来像文件的内容。 self.request.POST 看起来像这样:
UnicodeMultiDict([(u'file_1', FieldStorage(u'file_1', u'filename_1')), (u'random_string_field', u'random_string_value')])
希望对你有所帮助
-山姆
【讨论】:
filename = self.request.POST['file'].filename
file_ext = self.request.POST['file'].type
或
filename = self.request.params[<form element name with file>].filename
【讨论】: