2016-12-16 14 views
1

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

здесь локоны

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 [email protected]_Snow.jpeg 

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

$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); 

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

-F attributes='{"name":"Jon_Snow.jpeg", "parent":{"id":"0"}}' -F [email protected]_Snow.jpeg 

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

+4

Возможный дубликат [Передача $ \ _ POST-значений с помощью cURL] (http://stackoverflow.com/questions/28395/passing-post-values-with-curl) – Spechal

+0

Это не просто загрузка файла с использованием cURL, пожалуйста, обратите внимание на раздел атрибута команды имеет вложенный атрибут. – Dheeraj

ответ

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

Попробуй это: art about sending files via post and curlib

-F опции означает, что вы сено ding post Поле с именем и контентом. Содержание в этом случае из файла вы еще потому, используя @ приставка

+0

Пожалуйста, добавьте соответствующие части ссылки, чтобы предоставить пользователям помощь в случае, если ссылка не работает. – Spechal

+0

Вы проверяли, когда сообщение было сделано, функции работают с php 5.5+, я использую php 5.6 – Dheeraj

Смежные вопросы