跑道一次请求上传多个文件(建议)

Uploading multiple files with one request in Podio (suggestion)

在跑道中使用来自第三方应用程序的文件是一件痛苦的事情。

我正在制作的应用程序是跑道提供的网络表单的替代品。

在其中一些网络表单中,我需要最终用户上传最多 5 或 6 个文件。

截至目前,您必须为每个上传到跑道的文件发出 2 次请求。 1 个请求上传文件,另一个请求将文件附加到您创建的项目。

这一直在达到 PodioRateLimit。

更简单的方法是将所有文件编译成 1 个数组,然后上传并附加它。

如果这已经可行,请提供文档。

上传文件还是要一个一个的进行,跑道API不支持批量上传文件。然而,您不需要为每个上传到跑道的文件发出 2 个请求。它可能是:[文件数量] + 1 个请求。

因此,对于创建新项目,它可以是:

  1. 上传文件 1
  2. 上传文件 2
  3. 上传文件 3
  4. 上传文件 4
  5. 使用所有上传的文件创建新项目

请求总数:5(文件数 + 1)

files = [<array of file names>]
file_ids = []
files.each do |filename|
  uploaded_file = Podio::FileAttachment.upload(File.open(filename), File.basename(filename))
  file_ids << uploaded_file.file_id
end
new_item = Podio::Item.create(<app_id>, 'fields' => {'title' => 'My title'}, 'file_ids' => file_ids)

对于更新现有项目,它几乎是一样的,只需要调用 Item.update 而不是 Item.create。
P.S。抱歉,示例在 Ruby 而不是 PHP

这里是 php 工作代码:

    $field_id = 'photos';
    foreach($photos as $photo){
        // Upload file
        $file = PodioFile::upload("uploads/".$photo, $photo);
        $fileID[] = (int)$file->file_id;
    }


        PodioItem::update((int)$item->item_id, array(
            'fields' => array(
                "photos" => $fileID
            )));