CInternetFile怎么获取文件大小?!

白天是遇到一个windows系统自带的串口控件问题,老是在打开串口失败后弹出对话框,后来加了个异常捕获,解决了这一问题。

现在又遇到这个问题,感觉用别人封装的类就是不爽,首先还得熟悉结构,查阅文档,真正浪费时间。

以后还是不贪这种小便宜,不然,又会像这样,原本想节约时间,结果把本儿都赔进去了。

CInternetFile获取服务器端文件大小的方法:

1。GetLength()

不行,貌似它获取的是缓冲区内的数据大小,最大8192字节。

2。Seek()

不行,经他人验证不行,我也就懒得试了。

3。QueryOption()

获取的居然是乱码。

ULONG file_total_size=0;
TCHAR szContentLength[64]={0};
ULONG dwInfoSize = 64;

file->QueryOption(HTTP_QUERY_CONTENT_LENGTH, szContentLength, &dwInfoSize);

似乎没有办法获取到大小。

使用HINTERNET获取倒是可以,

ULONG file_total_size=0;
TCHAR szContentLength[64]={0};
ULONG dwInfoSize = 64;

::HttpQueryInfo(m_hFile, HTTP_QUERY_CONTENT_LENGTH, szContentLength, &dwInfoSize, NULL);

可是,怎么获取到CInternetFile的m_hFile成员,这倒是一个历史性问题。

4。GetStatus()

不行,得到CFileStatus之后,里面的成员m_size一直是零。

现在又不好把这段代码删除,因为自己以前写的一个从HTTP服务器断点续传下载文件的代码还一直没有被进行稳定性确认,不敢替换;改用其他人的代码吧,那些老兄总是把这么一个简单的问题搞得很复杂,又是回调函数,又是线程处理,替换的话,改动太大。

【注】:
ULONG file_total_size=0;
file_total_size=file->SeekToEnd();
file->SeekToBegin();

这就是解决办法!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值