0

StackOverflow について書くのはこれが初めてです。私の質問は次のとおりです。

cpprest sdk CasaBlanca プロジェクトに基づいて OneDrive C++ API を作成しようとしています。

https://casablanca.codeplex.com/

特に、現在 OneDrive ファイルの読み取り操作を実装しています。

実際、次のコードでファイル全体をダウンロードできました。

http_client api(U("https://apis.live.net/v5.0/"), m_http_config);

api.request(methods::GET, file_id +L"/content" ).then([=](http_response response){
    return response.body();
}).then([=]( istream is){
    streambuf<uint8_t> rwbuf = file_buffer<uint8_t>::open(L"test.txt").get();
    is.read_to_end(rwbuf).get();
    rwbuf.close();
}).wait()

このコードは基本的に、コンピューター上のファイル全体をダウンロードしています (file_id は、ダウンロードしようとしているファイルの ID です)。もちろん、ファイルから入力ストリームを抽出し、それを使用してファイルを読み取ることができます。

ただし、ファイルが大きい場合、これにより問題が発生する可能性があります。私が念頭に置いていたのは、呼び出し元がファイルを読んでいる間にファイルの一部をダウンロードすることでした (そして、呼び出し元が戻ってきた場合はその部分をキャッシュします)。

次に、私の質問は次のようになります。

OneDrive REST + cpprest を使用して、OneDrive に保存されているファイルの一部をダウンロードすることは可能ですか。ファイルをチャンクでアップロードすることは明らかに不可能であることがわかりました ( OneDrive のチャンク アップロード (再開可能なアップロード)? )。これはダウンロードにも当てはまりますか?

よろしくお願いいたします。

よろしくお願いします、

ジュゼッペ

4

1 に答える 1

1

OneDrive はバイト範囲の読み取りをサポートしています。そのため、Range ヘッダーを追加することで、任意のサイズのチャンクを要求できるはずです。

例えば、

GET /v5.0/<fileid>/content
Range: bytes=0-1023

これにより、ファイルの最初の KB が取得されます。

于 2014-09-22T18:22:14.283 に答える