Asana API Добавление вложения через cURL/PHP

Возникли трудности при попытке успешно добавить вложение к задаче с помощью cURL/PHP.

$data = array("file" => "@$filename");
$headers = array("Authorization: Basic " . base64_encode($asana_api_key) . ":"));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://app.asana.com/api/1.0/tasks/$task_id/attachments");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_exec($ch);

Предположим, что $filename, $asana_api_key и $task_id установлены правильно. Должно быть довольно просто... но по какой-то неизвестной причине я получаю следующий ответ:

{"errors":[{"message":"Server Error","phrase":"19 snobby warthogs cheer busily"}]}

Как ни странно, запуск этого запроса с помощью командной строки curl работает отлично. Я возился с этим в течение нескольких часов безрезультатно.

Есть идеи, в чем может быть дело?


person user2697509    schedule 19.08.2013    source источник
comment
Кажется, это происходит в ситуациях, когда передаваемое имя файла содержит косую черту, что довольно раздражает. Сейчас разбираюсь, исправить не сложно.   -  person agnoster    schedule 20.08.2013


Ответы (1)


Это была ошибка с нашей стороны, и теперь она должна быть исправлена. Это было связано с тем, как curl отправлял имя файла, а именно как полный путь к файлу. Браузеры обычно отправляют только базовое имя (без каталога). Теперь мы сами применяем ту же логику, если получаем полный путь для нашего локального имени, и кажется, что это работает, но ваш случай может быть другим.

Я был бы очень признателен, если бы это сработало для вас сейчас.

person agnoster    schedule 21.08.2013