gpt4 book ai didi

c++ - 使用 OneDrive Rest API 进行 block 下载

转载 作者:行者123 更新时间:2023-11-28 06:40:55 25 4
gpt4 key购买 nike

这是我第一次在 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 上的文件的一部分。我发现分块上传文件显然是不可能的 ( Chunked upload (resumable upload) for OneDrive? )。下载也是如此吗?

提前感谢您的宝贵时间。

最好的问候,

朱塞佩

最佳答案

OneDrive 支持字节范围读取。因此,您应该能够通过添加 Range header 来请求您想要的任何大小的 block 。

例如,

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

这将获取文件的第一个 KB。

关于c++ - 使用 OneDrive Rest API 进行 block 下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25972402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com