跑道一次请求上传多个文件(建议)
Uploading multiple files with one request in Podio (suggestion)
在跑道中使用来自第三方应用程序的文件是一件痛苦的事情。
我正在制作的应用程序是跑道提供的网络表单的替代品。
在其中一些网络表单中,我需要最终用户上传最多 5 或 6 个文件。
截至目前,您必须为每个上传到跑道的文件发出 2 次请求。 1 个请求上传文件,另一个请求将文件附加到您创建的项目。
这一直在达到 PodioRateLimit。
更简单的方法是将所有文件编译成 1 个数组,然后上传并附加它。
如果这已经可行,请提供文档。
上传文件还是要一个一个的进行,跑道API不支持批量上传文件。然而,您不需要为每个上传到跑道的文件发出 2 个请求。它可能是:[文件数量] + 1 个请求。
因此,对于创建新项目,它可以是:
- 上传文件 1
- 上传文件 2
- 上传文件 3
- 上传文件 4
- 使用所有上传的文件创建新项目
请求总数: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
)));
在跑道中使用来自第三方应用程序的文件是一件痛苦的事情。
我正在制作的应用程序是跑道提供的网络表单的替代品。
在其中一些网络表单中,我需要最终用户上传最多 5 或 6 个文件。
截至目前,您必须为每个上传到跑道的文件发出 2 次请求。 1 个请求上传文件,另一个请求将文件附加到您创建的项目。
这一直在达到 PodioRateLimit。
更简单的方法是将所有文件编译成 1 个数组,然后上传并附加它。
如果这已经可行,请提供文档。
上传文件还是要一个一个的进行,跑道API不支持批量上传文件。然而,您不需要为每个上传到跑道的文件发出 2 个请求。它可能是:[文件数量] + 1 个请求。
因此,对于创建新项目,它可以是:
- 上传文件 1
- 上传文件 2
- 上传文件 3
- 上传文件 4
- 使用所有上传的文件创建新项目
请求总数: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
)));