2014-10-08 113 views
0

我正嘗試使用其API將文件上傳到OneDrive上的用戶文件夾。cURL POST文件到OneDrive

$cfile = curl_file_create(realpath($_POST['ppt-file'])); 

    //place file in folder 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, "https://apis.live.net/v5.0/". $sekoia_folder ."/files?access_token=" . $access_token); 
    curl_setopt($ch, CURLOPT_POST, TRUE); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $cfile); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
    $upload_result = trim(curl_exec($ch)); 
    curl_close($ch); 

我收到API的迴應。

請求實體主體在「Content-Disposition」標題中的值不正確。這個值的預期格式是'Content-Disposition:form-data; NAME = 「文件」; 。文件名= 「[文件名]」」」

不知道我要去哪裏錯了,但這是HTTP標頭的預期

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-- 

在此先感謝

更新:! 當我將API url直接放在我的表單的action屬性中,並將我的文件輸入字段重命名爲'file'時,文件就會被上傳。但是,我只是得到我的頁面上打印的響應:)不想讓我想發生性關係。

<form action="<?php echo "https://apis.live.net/v5.0/". $sekoia_folder ."/files?access_token=" . $access_token; ?>" method="post" enctype='multipart/form-data'> 
    <input type="file" name="file"/> 
    <input type="submit" value="Upload your ppt" name="btnUpload"/> 
</form> 
+0

您對CURL生成的請求有跟蹤嗎?不幸的是,API的多部分POST格式不太適應,因此請求將看起來幾乎完全像例子。請參閱http://stackoverflow.com/questions/26225335/the-request-entity-body-has-an-incorrect-value-in-the-content-disposition-head – Brad 2014-10-08 16:09:43

+0

我現在可以上傳文件。但奇怪的是,如果該文件是一個簡報,它總是會在OneDrive上崩潰......我將很快將我的代碼發佈到GitHub,以便人們可以協作。 – axelvnk 2014-10-09 08:28:07

回答

0

顯然,將文件發佈到OneDrive API的唯一方法是直接在您的表單中這樣做。並提供一個redirect_uri。回覆將以附加到您網址的磅值的形式顯示。這是不理想的,因爲我必須使用JavaScript獲取我的文件ID。

<form action="<?php echo "https://apis.live.net/v5.0/". $sekoia_folder ."/files?access_token=" . $access_token . "&redirect_uri=http%3A%2F%2Fwww.sekoia-ppt.dev.intracto.com"; ?>" method="post" enctype="multipart/form-data"> 
    <input type="file" name="file"/> 
    <input type="submit" value="Upload your ppt" name="btnUpload"/> 
</form> 

我仍然想以捲曲類型的方式做這個,給我一個正確的json響應。所以如果有人知道如何,請讓我知道!