【问题标题】:Receive multi file post with google app engine使用谷歌应用引擎接收多文件帖子
【发布时间】:2009-10-01 11:55:25
【问题描述】:

我想接收来自图片上传者的多文件帖子。(i use this) 大多数示例展示了如何从帖子中接收一张图片。

我尝试了很多方法,但都没有得到结果。 例如

self.request.POST['Filename']

只给出第一个文件名。

当帖子中有多个文件/图像时该怎么办?

这样做的原因是在上传图片之前调整大小,这对于谷歌应用引擎来说太大了 上传。

编辑:

self.request.POST.multi.__dict__

显示

{'_items':
[('Filename', 'camila1.jpg'),
('Filedata[]', FieldStorage('Filedata[]', 'camila1.jpg')),
('Upload', 'Submit Query\r\n--negpwjpcenudkacqrxpleuuubfqqftwm----negpwjpcenudkacqrxpleuuubfqqftwm\r\nContent-Disposition: form-data; name="Filename"\r\n\r\nbornToBeWild1.jpg'),
('Filedata[]', FieldStorage('Filedata[]', 'bornToBeWild1.jpg')),
('Upload', 'Submit Query')]}

【问题讨论】:

    标签: google-app-engine


    【解决方案1】:

    您的 Flash 上传器设计用于 PHP 并发送多个 Filedata[] 字段(PHP 将其解释为数组以便于访问)

    所以你需要迭代并得到它们:

    def post(self):
      for file_data in self.request.POST.getall('Filedata[]'):
         logging.info(file_data.filename)
    

    数据应该是 file_data.value

    【讨论】:

      【解决方案2】:

      您是否在使用可用的 Django 库?如果是,check this out

      【讨论】:

        【解决方案3】:

        调用 self.request.POST.getall('Filename') 获取 FieldStorage 对象列表;每个包含一个文件。您可以使用 .value 访问文件数据,使用 .name 访问名称,使用 .type 访问 mimetype。

        【讨论】:

          【解决方案4】:

          我不知道那个多上传器是如何工作的,但是我过去做过一个,我只是在输入字段名称的末尾添加了一个数字,然后将其隐藏。然后添加一个新的文件输入字段以添加另一个文件。这样做的原因是他们不让你玩弄输入文件字段,因为你可以让它上传他们不希望你上传的文件。

          按照我的约定,在您的示例中,您的示例中的 2 个文件将是“Filename0”和“Filename1”。您还可以使用 firebug 来查看它将输入文件字段重命名为的内容。

          编辑:我看了看,它正在使用闪光灯。所以我不知道它是如何工作的。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-06-13
            • 1970-01-01
            相关资源
            最近更新 更多