2012-05-10 11 views
2

Как мы можем преобразовать этот код в 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-- 
+0

Лучше читайте о CURL: http://php.net/curl. – shadyyx

ответ

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

Edit: Не читал все должности, фиксированы.

1

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

<?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 => Я использовал массив с некоторыми представлениями.

В завитка я использовал этот variebles здесь: curl_setopt ($ ч, CURLOPT_POSTFIELDS, $ data_string); curl_setopt ($ ch, CURLOPT_HTTPHEADER, $ headers);

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

Если вы хотите узнать больше о curl_setopt, я sugest вам по этой ссылке: 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'])); 
+0

Как правило, ответы гораздо полезнее, если они содержат объяснение того, что должен делать код , и почему это решает проблему, не представляя других. –

+1

Теперь я думаю, что все в порядке ... –