Я только начал работать с 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>';
}
Согласно документации я должен получить ответ, содержащий
код загрузки файла, но я не получаю ответ, даже ошибка проверки. Это тоже не исключение. У меня не было проблем с другими запросами, поэтому я не думаю, что это проблема аутентификации. Может кто-нибудь, пожалуйста, помогите мне понять, что я делаю не так?
Для загрузки файлов вы должны передать массив путей к файлам или пути — пары типов 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
в этом примере) существуют и доступны для чтения.
Была такая же проблема, и вот как я ее решил:
Изнутри метода записи в 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']
Работает как задумано сейчас.