2017-01-18 16 views
0

Я пытаюсь выяснить, как сделать эту команду CURL:Basic Curl в PHP Преобразование

curl https://uploads.stripe.com/v1/files \ 
    -u sk_test_OCHANGEDPcDr0: \ 
    -F purpose=identity_document \ 
    -F file="@/path/to/a/file.jpg" 

В PHP, я использую этот скрипт: https://github.com/php-mod/curl

И попытался это:

$curl->setBasicAuthentication('-u', 'sk_live_CHANGED'); 
$curl->post('https://uploads.stripe.com/v1/files', array(
     'purpose' => 'dispute_evidence', 
     'file' => $targetFile, 
    )); 

Но я думаю, что синтаксис совершенно неправильно, я действительно новый свернуться и не понимаю, что все различные -u и -F команды PHP эквиваленты.

+0

Я знаю, что они означают, я не могу понять синтаксис эквивалента PHP – Jordash

+0

Postman - это интерфейс для запроса HTTP/API и имеет функцию, которая показывает несколько «копий» запроса в curl, PHP, Python среди других альтернатив: https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop – MikeVelazco

+1

Почему у вас есть '-u' в аргументах' setBasicAuthentication'? Первый аргумент должен быть именем пользователя, вторым аргументом должен быть пароль. – Barmar

ответ

1

Вы, вероятно, хотите попробовать что-то вроде этого:

$headers = array(
    'Authorization: Bearer ' . $your_api_key, 
    'Content-Type: multipart/form-data' 
); 

$curl = curl_init(); 
curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => 1, 
    CURLOPT_URL => 'https://uploads.stripe.com/v1/files', 
    CURLOPT_POST => true, 
    CURLOPT_INFILESIZE => '10000', 
    CURLOPT_HTTPHEADER => $headers, 
    CURLOPT_POSTFIELDS => array(
    'purpose' => 'dispute_evidence', 
    'file' => '@' . realpath($path_to_file) 
) 
)); 

$resp = curl_exec($curl); 
curl_close($curl); 

EDIT: В качестве альтернативы, вы можете загрузить файлы непосредственно из браузера like this.

+0

Как установить ключ API? – Jordash

+0

фигу я вижу – Jordash

+0

я получаю эту ошибку с этим кодом: «ошибка»: { «типа»: «invalid_request_error», «сообщение» : «Invalid хэш», «пары»: «Файл» } файл загружается на сервер – Jordash

1

Опция -u username:password переводит:

$curl->setBasicAuthentication('username', 'password'); 

Чтобы загрузить файл, вам нужно поставить @ перед именем файла, так же, как в команде curl.

$curl->post('https://uploads.stripe.com/v1/files', array(
    'purpose' => 'dispute_evidence', 
    'file' => '@' . $targetFile, 
)); 
0

Если у вас есть функциональный curl команду вызова, вы можете получить то, что вы после, добавив опцию --libcurl filename.c.

Это сгенерирует программу на C, чтобы выполнить то, что сделала ваша командная строка. Хотя вы после PHP, а не C, это по-прежнему полезно, потому что они используют одни и те же имена для разных опций.

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