为什么有的网页取不到大小? ? ( 积分: 20 )

  • 主题发起人 主题发起人 111delphi
  • 开始时间 开始时间
1

111delphi

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么有的网页取不到文件大小? 下载不是页面的文件却可以得到大小.
有的却可以得到文件大小???

uses WinInet;
function GetWebPage(const Url: string):string;
var
Session,
HttpFile:HINTERNET;
szSizeBuffer:Pointer;
dwLengthSizeBuffer:DWord;
dwReserved:DWord;
dwFileSize:DWord;
dwBytesRead:DWord;
Contents:PChar;
begin
Session:=InternetOpen('',0,niL,niL,0);
HttpFile:=InternetOpenUrl(Session,PChar(Url),niL,0,0,0);
dwLengthSizeBuffer:=1024;
HttpQueryInfo(HttpFile,5,szSizeBuffer,dwLengthSizeBuffer,dwReserved);
GetMem(Contents,dwFileSize);
InternetReadFile(HttpFile,Contents,dwFileSize,dwBytesRead);
InternetCloseHandle(HttpFile);
InternetCloseHandle(Session);
Result:=StrPas(Contents);
FreeMem(Contents);
 
为什么有的网页取不到文件大小? 下载不是页面的文件却可以得到大小.
有的却可以得到文件大小???

uses WinInet;
function GetWebPage(const Url: string):string;
var
Session,
HttpFile:HINTERNET;
szSizeBuffer:Pointer;
dwLengthSizeBuffer:DWord;
dwReserved:DWord;
dwFileSize:DWord;
dwBytesRead:DWord;
Contents:PChar;
begin
Session:=InternetOpen('',0,niL,niL,0);
HttpFile:=InternetOpenUrl(Session,PChar(Url),niL,0,0,0);
dwLengthSizeBuffer:=1024;
HttpQueryInfo(HttpFile,5,szSizeBuffer,dwLengthSizeBuffer,dwReserved);
GetMem(Contents,dwFileSize);
InternetReadFile(HttpFile,Contents,dwFileSize,dwBytesRead);
InternetCloseHandle(HttpFile);
InternetCloseHandle(Session);
Result:=StrPas(Contents);
FreeMem(Contents);
 
像IIS,如果不缓冲动态页的输出内容,那HTTP头中就没有长度,所以你就取不到。
一般静态文件都是可以的,但动态页面就跟服务器设置有关了。
 
不是这样的.如果不用上面这段代码,用别的下载方法,就能得到大小的
 
看了一下代码,你上面的代码有问题,你确定代码完整吗?
szSizeBuffer?dwFileSize?
 
多人接受答案了。
 
后退
顶部