今天测试阿里云OSS文件上传接口,用fstream获取文件指针,代码如下

std::shared_ptr<std::iostream> content = std::make_shared<std::fstream>(__FILE__, std::ios::in);

该代码读取当前文件,拿到文件指针content,测试没有问题

但是后面讲__FILE__改为某个dwg文件后测试,总是只能上传一部分。

分析过程,肯定是文件读取不完整,提前读到了文件结尾导致的,改为如下方式后读取上传成功

std::shared_ptr<std::iostream> content = std::make_shared<std::fstream>(localFiePath, std::ios::in | std::ios::binary);

即添加 std::ios::binary,表示按二进制文件读取。

所以,就像C的fopen函数一样,fstream如果不指定打开方式,默认会以文本方式打开文件,此时对于二进制文件就会出现提前读取结束的问题。

 

相关文章:

  • 2021-12-01
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-01-25
  • 2022-12-23
  • 2022-12-23
  • 2022-01-22
  • 2022-12-23
  • 2021-11-30
  • 2022-12-23
相关资源
相似解决方案