Я пытаюсь прочитать сегмент большого объекта AWS S3, начиная с первых 1048576 байтов.Я указываю диапазон байтов, которые я хочу прочитать, но я не получаю эти байты.Возвращенная длина верна.
Я новичок в этом, поэтому я, вероятно, что-то делаю не так, и быть программистом на C вместо C ++ не очень помогло.
Вот примермой код:
int start=0, rbytes=0;
Aws::S3::S3Client s3_client;
Aws::S3::Model::GetObjectRequest read_object_request;
sprintf(range,"bytes=%lld-%lld",start,start+1048575);
read_object_request.SetBucket(container_name);
read_object_request.SetKey(object_name);
read_object_request.SetRange(range);
auto results = s3_client.GetObject(read_object_request);
if (results.IsSuccess())
{
rbytes = results.GetResult().GetContentLength();
std::cout << rbytes << " bytes read" << std::endl;
}
memcpy(bdata,results.GetResult().GetBody().rdbuf(),rbytes);
Затем я дам дамп буфера bdata, и это не то, что я ожидал.Когда я повторяю выполнение кода нового экземпляра, он возвращает разные данные.
Хотя я не показываю это, буферу bdata предварительно выделено 2 мегабайта.
Любые идеи, которыебудет указывать мне в правильном направлении будет признателен.
Заранее спасибо.