Загрузка чанка с помощью OneDrive Rest API

это первый раз, когда я пишу на StackOverflow. Мой вопрос заключается в следующем.

Я пытаюсь написать API OneDrive C ++, основанный на проекте cpprest sdk CasaBlanca:

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 — это идентификатор файла, который я пытаюсь загрузить). Конечно, я могу извлечь входной поток из файла и использовать его для чтения файла.

Тем не менее, это может вызвать проблемы, если файл большой. Я хотел загрузить часть файла, пока вызывающий читал его (и кэшировать эту часть, если он вернется).

Тогда мой вопрос будет:

Возможно ли с помощью OneDrive REST + cpprest загрузить часть файла, хранящегося в OneDrive. Я обнаружил, что загрузка файлов кусками, по-видимому, не представляется возможным (Частичная загрузка (возобновляемая загрузка) для OneDrive?). Это правда и для скачивания?

Заранее спасибо за ваше время.

С наилучшими пожеланиями,

Giuseppe

0

Решение

OneDrive поддерживает чтение диапазона байтов. И поэтому вы должны иметь возможность запрашивать порции любого размера, добавляя заголовок Range.

Например,

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

Это приведет к получению первой КБ файла.

1

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector