3

在 Delphi 中使用此代码获取网页大小:(我的意思是页面源大小)

uses
  IdHTTP

function URLsize(const URL : string) : integer;
var
  Http: TIdHTTP;
begin
  Http := TIdHTTP.Create(nil);
  try
    Http.Head(URL);    
    result := round(Http.Response.ContentLength / 1048576);   //MB   
  finally
    Http.Free;
  end;
end;

对于某些 URL,我可以轻松获取文件大小,例如http://sample.com/test.exe. 它以 MB 为单位返回大小。

但我无法使用此代码获取 URL 大小,例如http://stackoverflow.com/; 它返回0-1

在这种情况下如何获得尺寸?

4

2 回答 2

8

并非所有 HTTP HEAD 响应都包含内容长度。所以,一般来说,你想做的事情是不可能的。如果您遇到不包含内容长度的响应,您需要下载内容才能找到长度。

于 2013-08-22T14:35:20.753 回答
3

即使 Web 服务器确实返回了正确的内容长度,您也将其除以1048576得到兆字节值。由于http://stackoverflow.com/远小于一个兆字节,因此它正在返回0. 然而,我仍然很难过你-1来自哪里——因为对我来说是http://stackoverflow.com/回报194569,没有分裂。你是-1从另一个网站得到的吗?你的结果是分割值还是原始值Http.Response.ContentLength

于 2013-08-23T00:22:32.677 回答