c++ 如何获取http网页和文件的大小

futurepi 2013-06-01 04:33:47
没有用MFC的库, 而是使用WinInet库获取, 主要是HttpQueryInfo( HTTP_QUERY_CONTENT_LENGTH) 获取文件大小, 但大部分网页(文件) 连接 都获取不到大小, 提示12150 ERROR_HTTP_HEADER_NOT_FOUND , 找不到报头, 但可以下载下来。 试了下几个连接
http://zhidao.baidu.com/question/555151711.html //不能获取到文件大小
http://dl.bizhi.sogou.com/dl/sogou_wallpaper_14_1527.exe //这是搜狐壁纸的安装程序, 可以获取到文件大小
想问下 如何能正确获取请求的文件大小, 还有文件名如何获取, 如果说是http服务不支持, 但迅雷里几乎所有下载的连接却都能获取到文件名和大小, 求教~!
...全文
934 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2014-09-17
  • 打赏
  • 举报
回复
现在有人知道怎么获取任何url的长度的么?
CoderShow 2014-04-18
  • 打赏
  • 举报
回复
我也遇到了同样的问题,抓取网页的时候长度获取不到,不知道该如何处理
wwwspider001 2013-06-25
  • 打赏
  • 举报
回复
都似乎分情况进行处理的 有长度最好,没长度就只能硬着头皮收。迅雷之类的,因为大部分都是重复的下载,即使自身没有长度信息的首次下载,在下载完成后,也可以得到长度等各种信息提交服务器,其他人下载就可以得到相应的信息,显示起来就更友好。 文件名的问题,是自己处理的,一种是直接有文件名,有的需要自己构造,总之也是分情况对待,构造出最合理的名字出来。
futurepi 2013-06-15
  • 打赏
  • 举报
回复
看来是获取不到网页大小了
ok1234567 2013-06-09
  • 打赏
  • 举报
回复
http 协议传送文件资源,都会有Content-Length 动态响应,有的有(可能chunked),有的没有 在没有的情形下,http server一定后会在数据发送完毕后,关闭会话连接,所以客户端会收到CLOSE消息
futurepi 2013-06-03
  • 打赏
  • 举报
回复
引用 3 楼 xiaoc1026 的回复:
只能在TCP头中获取TCP的数据段大小。 WinInet 无法解决这个问题
引用 4 楼 dream238 的回复:
有些HTTP传输是CHUNKED传输,这种情况是没有CONTENT-LENGTH的,所以,只能收完了才知道大小了...
一个说tcp里可以获取到, 一个说 服务器压根就没传文件大小的字段回来
ArcRain 2013-06-01
  • 打赏
  • 举报
回复
有些HTTP传输是CHUNKED传输,这种情况是没有CONTENT-LENGTH的,所以,只能收完了才知道大小了...
见习学术士 2013-06-01
  • 打赏
  • 举报
回复
引用 2 楼 vbbianchengde 的回复:
[quote=引用 1 楼 xiaoc1026 的回复:] 可能有些HTTP服务在HTTP头中没有返回LENGTH字段
如果是这样, 那我们怎么去获取文件大小, 有其他方法?[/quote] 只能在TCP头中获取TCP的数据段大小。 WinInet 无法解决这个问题
futurepi 2013-06-01
  • 打赏
  • 举报
回复
引用 1 楼 xiaoc1026 的回复:
可能有些HTTP服务在HTTP头中没有返回LENGTH字段
如果是这样, 那我们怎么去获取文件大小, 有其他方法?
见习学术士 2013-06-01
  • 打赏
  • 举报
回复
可能有些HTTP服务在HTTP头中没有返回LENGTH字段

18,363

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧