Преобразование в PHP REST CURL POST

Как мы можем преобразовать этот код в PHP REST CURL POST?

POST https://apis.live.net/v5.0/me/skydrive/files?access_token=ACCESS_TOKEN

Content-Type: multipart/form-data; boundary=A300x

--A300x
Content-Disposition: form-data; name="file"; filename="HelloWorld.txt"
Content-Type: application/octet-stream

Hello, World!
--A300x--

person maa_ku    schedule 10.05.2012    source источник
comment
Вам лучше прочитать о CURL: php.net/curl.   -  person shadyyx    schedule 10.05.2012


Ответы (2)


$url = 'POST https://apis.live.net/v5.0/me/skydrive/files';
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POSTFIELDS, array('access_token' => TOKEN, 'name' => 'file', 'filename' => "@HelloWorld.txt"));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);

Редактировать: не прочитал весь пост, исправлено.

person Rawkode    schedule 10.05.2012

Я надеюсь, что это полезно:

 <?php
    $headers = array('token: pacexpressx1x2x3j' );
    $data = array(
    "STATUS" => "insert" ,
    "NAME"   =>  utf8_encode("Test integration 10"),
    "COD_AREA"   =>  "4",
    "DESC_AREA_"  =>   utf8_encode("info/IT"),
    "JOB" =>  utf8_encode("TEST job"),
    "COMPANY" => "4",
    "DESC_COMPANY" => utf8_encode("XPTO1"),
    "file" => '@/home/user/test.png');

    $url = 'your_link';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

    $output = curl_exec($ch);
    echo($output) . PHP_EOL;
    curl_close($ch);

В этом примере я отправляю заголовок и поля сообщения.

$headers => Я поместил значение токена в массив, просто чтобы показать, как вы можете отправить значение.

$data => Я использовал массив с некоторыми мнимыми значениями.

В curl я использовал следующие переменные: curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

CURLOPT_POSTFIELDS -> полные данные для публикации в операции HTTP "POST". Чтобы опубликовать файл, добавьте к имени файла символ @ и укажите полный путь. Тип файла можно указать явно, указав после имени файла тип в формате ';type=mimetype'. Этот параметр может быть передан либо в виде строки с URL-адресом, например «para1=val1¶2=val2&...», либо в виде массива с именем поля в качестве ключа и данными поля в качестве значения. Если значение представляет собой массив, для заголовка Content-Type будет установлено значение multipart/form-data. Начиная с PHP 5.2.0, значение должно быть массивом, если файлы передаются в эту опцию с префиксом @.

Если вы хотите узнать больше о curl_setopt, я предлагаю вам эту ссылку: http://php.net/manual/pt_BR/function.curl-setopt.php

Чтобы увидеть, что вы отправляете, и получить отправляемый файл, вы можете использовать этот код ниже:

    echo 'Here is some more debugging info:';
    echo "\n<hr />\n";
    print_r($_FILES);
    echo "\n<hr />\n";
    print_r($_POST);
    print "</pr" . "e>\n"; 
    echo "\n<hr />\n";
    // here you will record the file in your server... you can choose a directory if you want
    file_put_contents($_FILES['file']['name'],file_get_contents($_FILES['file']['tmp_name']));
person Davi Amaral    schedule 13.12.2017
comment
Как правило, ответы гораздо полезнее, если они включают объяснение того, для чего предназначен код, и почему это решает проблему, не вводя других. - person Tom Aranda; 13.12.2017