3
Я пытаюсь загрузить файл в поле с помощью curl, я могу создавать и просматривать папки, но не загружать файл.Загрузка файлов в BOX с использованием v2 API
Согласно документации завиток запрос:
curl https://upload.box.com/api/2.0/files/content \
-H "Authorization: Bearer ACCESS_TOKEN" -X POST \
-F attributes='{"name":"tigers.jpeg", "parent":{"id":"11446498"}}' \
-F [email protected]
Я использую этот метод:
public function put_file($filename, $name, $parent_id) {
$url = $this->upload_url . '/files/content';
$attributes = array('name' => $name, 'parent' => array('id' => $parent_id));
$params = array('attributes' => json_encode($attributes), 'file' => "@".realpath($filename));
$headers = array("Authorization: Bearer ".$this->access_token);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
Ответ я вернусь есть:
Array
(
[url] => https://upload.box.com/api/2.0/files/content
[content_type] => text/html;charset=UTF-8
[http_code] => 400
[header_size] => 243
[request_size] => 228
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 1.616644
[namelookup_time] => 0.004139
[connect_time] => 0.151089
[pretransfer_time] => 0.465782
[size_upload] => 331
[size_download] => 0
[speed_download] => 0
[speed_upload] => 204
[download_content_length] => 0
[upload_content_length] => 331
[starttransfer_time] => 1.466139
[redirect_time] => 0
[redirect_url] =>
[primary_ip] => 74.112.184.85
[certinfo] => Array
(
)
[primary_port] => 443
[local_ip] => 213.230.222.4
[local_port] => 52643
)
Я ve посмотрел на подобные вопросы по SO, но не может видеть, что/где я ошибаюсь.
Библиотека я использую BoxPHPAPI
Вы можете получить журнал фактического запроса HTTP, который, вносимый? Если вы находитесь на OS X или Linux, простой способ сделать это - запустить «nc -l localhost 8080», а затем сделать запрос cURL «http: // localhost: 8080/api/2.0/files/content' вместо Box. – Greg
на Windows, к сожалению, посмотрел на заголовки, которые завиток посылал, но не может определить, что не так, попытался сделать это через shell_exec, а работает отлично. Я поеду с этим вариантом. – Dave
В случае, если это поможет, вот пример того, как должен выглядеть весь HTTP-запрос: http://stackoverflow.com/a/27759602/108 – Greg