2017-03-21 8 views
1

したがって、graph.microsoft.comで認証を取得するのに苦労した後、私は今SharePointサイトとリストを読むことができます。Sharepointは、graph.microsoft.comベータとphp/cakephpでファイルの内容をアップロードします

私もドライブを読み取ることができ、私はREST呼び出しでteamsiteにフォルダとファイルを作成することができました。問題は、私は "ファイルを作成"することができますが、それはmy.sharepoint.comに表示され、コンテンツの長さは0です。

私はそれを通して私を導くために、このページを使用: https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/listitem_create

$currentFile = new File($file); 
    $contents = $currentFile->read(); 
    $currentFile->close(); 

    $url = 'https://graph.microsoft.com/beta/sharePoint/site/drives/'.$this->driveId.'/'.$location.'/items/'.$parent_id.'/children'; 

    $tempData = $this->Controller->Temp->read('Office'); 
    $headers = array('Authorization' => 'Bearer '.$tempData['token']['access_token'], 'Content-Type' => 'application/json'); 
    $data = json_encode(array('name' => basename($file), 'file' => new stdClass())); 

    $sckt = new HttpSocket(array('ssl_verify_host' => false)); 
    $apiData = $sckt->post($url, $data, array('header' => $headers)); 

私は$の内容を送信していない午前見ることが正しいですが、次のように私は、ファイルを作成するために使用されるコードがありますこれはリクエストを破棄するため、varsonongとjsonリクエストを一緒にします。そして私はOneDriveのセクションで、ファイル内容がjsonを通してバイナリ形式の文字列として送信されることを見た。ここでは)json配列で、しかし、私はちょうど "不正なリクエスト"を取得します。私はtext/plainとして投稿しようとしましたが、jsonのリクエストしか受け付けません。 Form/multipartもうまくいきませんでしたので、私は何種類かのオプションと配列キーを試していましたが、何も私のファイルの内容をsharepointに持ってこないようです。

「Columnset」 (https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/listitem_update)でも同じことを試しました。

要約:ファイルの作成、フォルダの作成、変更、メタデータの更新と作成、名前の変更ができるようになりました。しかし、私はファイルの内容をアップロードすることはできません!

現時点では私はそれがちょうど愚かな私は見ていないことを望んでいるので、あなたは私を笑って、あなたが笑って終わった後にいくつかの素晴らしい助言を与えることができます。なぜなら、ベータ版では動作するものではなく、ちょっと変わった感じがするからです。

答えて

0

微調整が必​​要です。ヘッダーでは、ヘッダーに$ contents.strlenを介してContent-Lengthを必ず含めてください。 Content-Typeをtext/plainに設定し、最後に投稿の本文を$ contentsにする必要があります。

+0

おかげで、しかし、私はOneDriveのため、この唯一の作品だと思う「BadRequest」、 「メッセージ」:「エンティティのみJSONのContent-Typeヘッダーで書き込みを許可します。 "、 –

1

多くの試行錯誤やいくつかの読書の後、私はちょっとばかだがt.b.hだと分かった。ドキュメントには、この上で非常に有用と非常に不足はありませんが、それはあなたがそれを把握たら答えは非常に簡単だった

...そうそうベータ版です。 graph.microsoft.com REST APIを使用して共有ポイント上にファイルをアップロードまたは作成する方法は、先に示したように0サイズのファイルホルダーを最初に作成する必要があることです。次に、ファイルのアップロード/適用の下にあるコードを使用します。

URLに/内容が含まれています。

$currentFile = new File($file); 
    $contents = $currentFile->read(); 
    $currentFile->close(); 

    $url = 'https://graph.microsoft.com/beta/sharePoint/site/drives/'.$this->driveId.'/items/'.$parent_id.'/children/'.basename($file).'/content'; 

    $tempData = $this->Controller->Temp->read('Office'); 
    $headers = array('Authorization' => 'Bearer '.$tempData['token']['access_token'], 'Content-Length' => strlen($contents), 'Content-Type' => 'text/plain'); 

    $sckt = new HttpSocket(array('ssl_verify_host' => false)); 
    $apiData = $sckt->put($url, $contents, array('header' => $headers)); 

これで、入力としてテキスト/プレーン要求が受け入れられました。これは他の誰か:)

+0

Lekker gewerkt pik – Jordy

0

役立ちます

ホープそれはあなたがファイル名の後にコロンを追加する必要が判明し、それが動作するはずです。 「コード」:私はそのバージョンをしようとすると、私は応答としてこれを取り戻すため、返信用

$url = 'https://graph.microsoft.com/beta/sharePoint/site/drives/'.$this->driveId.'/items/'.$parent_id.'/children/'.basename($file).':/content'; 
関連する問題