【问题标题】:C (WinAPI) - get size of internet fileC (WinAPI) - 获取 Internet 文件的大小
【发布时间】:2015-03-23 10:22:02
【问题描述】:

我使用 InternetOpenUrl 和 InternetReadFile 从 Internet 下载文件。如何在下载之前获取文件的大小?从 Internet 手动下载时,您可以在下载过程开始时看到总大小,但我如何获得该大小?

【问题讨论】:

标签: c file winapi


【解决方案1】:

根据MSDN,您应该使用HttpQueryInfo 来获取使用InternetOpenUrl 访问的资源的大小。对应的查询标志称为HTTP_QUERY_CONTENT_LENGTH

【讨论】:

  • 可以使用InternetOpenUrl返回的HINTERNET吗?如果是这样,为什么会失败?双字大小 = 0;双字 r1=256, r2=0; HttpQueryInfoA(hFile, HTTP_QUERY_CONTENT_LENGTH| HTTP_QUERY_FLAG_NUMBER, &size, &r1, &r2);
  • @Dan:一个疯狂的猜测:你传递了一个 DWORD 作为你的接收缓冲区,但你告诉 API,它的大小是 256 字节。
  • 当我尝试使用 char 数组作为缓冲区时,这是上次尝试留下的。现在尝试将其设置为 4 个字节,但由于某种原因仍然失败。虽然下载工作正常。
  • @Dan:HttpQueryInfo:"如果成功则返回 TRUE,否则返回 FALSE。要获取扩展的错误信息,请调用 GetLastError。”
  • 这是我得到的错误:ERROR_HTTP_HEADER_NOT_FOUND 找不到请求的标头。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多