api — активная загрузка файлов Collab с использованием PHP SDK

Я только начал работать с API, используя этот документация, и у меня возникают проблемы с загрузкой файлов. Я не получаю ответ от вызова API для загрузки файлов. Я пытался с несколькими типами файлов без успеха. Вот мой вызов API:

$client = new \ActiveCollab\SDK\Client($token);
try {
$response = $client->post('upload-files',[
[
'test-file.txt',
'text\/plain'
]
]);

echo $response->getBody();
} catch(AppException $e) {
print $e->getMessage() . '<br><br>';
}

Согласно документации я должен получить ответ, содержащий
код загрузки файла, но я не получаю ответ, даже ошибка проверки. Это тоже не исключение. У меня не было проблем с другими запросами, поэтому я не думаю, что это проблема аутентификации. Может кто-нибудь, пожалуйста, помогите мне понять, что я делаю не так?

1

Решение

Для загрузки файлов вы должны передать массив путей к файлам или пути — пары типов MIME в качестве третьего аргумента клиента post метод:

$response = $client->post('upload-files', [], ['/path/to/file.png']);
$response = $client->post('upload-files', [], ['/path/to/file.png' => 'image/png']);

Это работает, только если файлы по указанному пути (/path/to/file.png в этом примере) существуют и доступны для чтения.

1

Другие решения

Была такая же проблема, и вот как я ее решил:

Изнутри метода записи в SDK:

if (is_array($file)) {
list($path, $mime_type) = $file;
}

с php.net:

In PHP 5, list() assigns the values starting with the right-most parameter.
In PHP 7, list() starts with the left-most parameter.

Я использую PHP 5.6, поэтому я поменялся местами:

['/path/to/file.png' => 'image/png']

чтобы:

['image/png' => '/path/to/file.png']

Работает как задумано сейчас.

1

По вопросам рекламы [email protected]