【问题标题】:How to extract file name from the uploaded file/form with GAE?如何使用 GAE 从上传的文件/表单中提取文件名?
【发布时间】:2011-08-08 20:57:18
【问题描述】:

以下数据已上传到我的 GAE 应用程序 -

我该怎么做

  1. 仅获取包含文件的字段
  2. 获取上传文件的文件名?

【问题讨论】:

    标签: google-app-engine


    【解决方案1】:
    1. 获取仅包含文件的字段

      import cgi
      
      values = self.request.POST.itervalues()
      files = [v for v in values if isinstance(v, cgi.FieldStorage)]
      
    2. 获取上传文件的文件名

      filenames = [f.filename for f in files]
      

    编辑:更正了 sn-p,现已测试 :)

    【讨论】:

    • moraes,我收到“不可索引”错误: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)
    • 它们是 FieldStorage 实例,所以contents = single_file.value。然后获取 len 的内容。文档:epydoc.sourceforge.net/stdlib/cgi.FieldStorage-class.html
    【解决方案2】:

    假设数据是使用表单发布的,对于#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')])

    希望对你有所帮助

    -山姆

    【讨论】:

    • 查看任何看起来像文件的东西 - 问题是如何识别它;)
    【解决方案3】:
    filename = self.request.POST['file'].filename
    file_ext = self.request.POST['file'].type 
    

    filename = self.request.params[<form element name with file>].filename
    

    【讨论】:

      猜你喜欢
      • 2011-11-21
      • 1970-01-01
      • 2011-11-21
      • 2018-03-07
      • 2013-11-06
      • 1970-01-01
      • 2020-04-09
      • 1970-01-01
      • 2013-02-25
      相关资源
      最近更新 更多