2012-05-10 141 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); 

編輯:沒有閱讀所有崗位的,固定的。

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($ CH,CURLOPT_POSTFIELDS,$ data_string); curl_setopt($ ch,CURLOPT_HTTPHEADER,$ headers);

CURLOPT_POSTFIELDS - >要在HTTP「POST」操作中發佈的完整數據。要發佈文件,請使用@預先指定文件名並使用完整路徑。文件類型可以通過跟隨具有格式'; type = mimetype'格式的文件名來顯式指定。此參數可以作爲urlencoded字符串傳遞,如'para1 = val1 & para2 = val2 & ...'或作爲字段名稱作爲鍵和字段數據作爲值的數組。如果value是一個數組,則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

現在我認爲沒關係... –