volcengine / ve-tos-cpp-sdk

Volcengine TOS C++ SDK
Apache License 2.0
8 stars 5 forks source link

RangeRead参数判断有问题 #52

Closed dongxiao1198 closed 1 month ago

dongxiao1198 commented 1 month ago

https://github.com/volcengine/ve-tos-cpp-sdk/blob/b5ac7603e683f29735cb383b9aeef3612a489bb0/sdk/src/TosClientImpl.cc#L707

(input.getRangeStart() != 0 || input.getRangeEnd() != 0)的时候才像服务端发送range信息,但是目前的语意是读:[start, end]这样一个闭区间。 如果用户要读第一个字节且只读第一个字节就需要给[0, 0],此时会跳过这个逻辑,直接读整个文件。 随便写个demo可以复现:

void getObjectRange( const std::shared_ptr& client, const std::string& bucketName, const std::string& objectKey, int64_t start, int64_t end) { GetObjectV2Input input(bucketName, objectKey); input.setRangeStart(start); input.setRangeEnd(end); auto output = client->getObject(input); if (!output.isSuccess()) { std::cout << output.error().String() << std::endl; } std::cout << output.result().getContentLength() << std::endl; std::cout << output.result().getContent()->rdbuf() << std::endl; }

getObjectRange(cli, bucket, key, 0, 0); getObjectRange(cli, bucket, key, 0, 1);

luoyanpeng-bytedancer commented 1 month ago

请range_传递range信息,后续版本会将rangeStart_以及rangeEnd_废弃