Загрузка нескольких файлов одним запросом в Podio (предложение)

Работа с файлами из стороннего приложения в Podio - это боль.

Приложение, которое я создаю, является заменой веб-формы, которую предоставляет Podio.

В некоторых из этих веб-форм мне нужно, чтобы конечный пользователь загрузил до 5 или 6 файлов.

На данный момент вы должны делать 2 запроса на файл, загруженный в Podio. 1 запрос на загрузку файла и еще один на прикрепление файла к созданному вами элементу.

Это постоянно попадает в PodioRateLimit.

Что было бы проще, так это скомпилировать все файлы в один массив, а затем загрузить и прикрепить его.

Если это уже возможно, предоставьте документацию.


person Kjaal    schedule 21.09.2016    source источник


Ответы (2)


Загрузка файлов по-прежнему должна происходить по одному, а Podio API не поддерживает массовую загрузку файлов. Однако вам не нужно загружать в Podio 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

person Pavlo - Podio    schedule 21.09.2016
comment
Что ж, это наверняка сократило бы мои запросы вдвое, но, как уже говорилось, это предложение для podio реализовать массовую загрузку файлов. Спасибо за предложение. - person Kjaal; 22.09.2016
comment
Что ж, Podio - это не инструмент для управления файлами, а гораздо более широкое решение, поэтому массовая загрузка файлов может не иметь приоритета, но я передам ваш запрос команде Podio :) Кроме того, не могли бы вы принять ответ, если он полезен. Это заставит будущих пользователей найти его быстрее. - person Pavlo - Podio; 22.09.2016

Вот рабочий код 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
            )));
person Andreea Onica    schedule 20.04.2018