Конвертировать cURL для использования в функции php

В настоящее время я работаю над коробка платформы, и пытается загрузить файл на сервер коробки. Box использует cURL для загрузки файлов, и я пытаюсь отправить запросы cURl от php. До сих пор я конвертировал большинство команд cURL в php jargon, но я не мог понять, как передать атрибуты (имя, путь, содержащую папку) файла для загрузки.

вот курл

curl https://upload.box.com/api/2.0/files/content -H "Authorization: Bearer APP_USER_TOKEN" -X POST -F attributes='{"name":"Jon_Snow.jpeg", "parent":{"id":"0"}}' -F file=@Jon_Snow.jpeg

и вот версия php для неполной команды cURL.

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://upload.box.com/api/2.0/files/content");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);

$headers = array();
$headers[] = "Authorization: Bearer ".json_decode($accessToken, true )['access_token'];
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);

Как мне сделать последнюю часть команды cURL, которая

-F attributes='{"name":"Jon_Snow.jpeg", "parent":{"id":"0"}}' -F file=@Jon_Snow.jpeg

Изменить: предложение «возможного дубликата» не является точным, я прошу способ добавить атрибуты к загруженным файлам в форме -F attributes='{"name":"Jon_Snow.jpeg", "parent":{"id":"0"}}' я не понимаю, насколько предложенный ответ уместен

1

Решение

Нашел ответ, мне нужно было json_encode массив атрибутов, а затем использовать new \CURLFile() функция для создания дескриптора файла, он не работал с realpath()

$attributes = array('name'=>$fileName,'parent'=>array('id'=>$folderId));
$file = new \CURLFile($filePath);
$fields = array('attributes' => json_encode($attributes), 'file' => $file);
$headers = array("Authorization: Bearer ".$accessToken);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $uploadUrl);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);

$result = curl_exec($ch);
1

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

Попробуй это: искусство отправки файлов по почте и curlib

-Опция F означает, что вы отправляете поле сообщения с именем и содержанием. Контент в этом случае взят из Файла, потому что вы используете префикс @

-1

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