小弟想做一个文件下载的程序,想通过得到HTTP头在文件下载前得到文件的大小
如果小于某个值比如100K,则不下载该文件。
具体如何实现请教大家方法或者代码

解决方案 »

  1.   

    用 WinINet APIs
    1. InternetOpen
    2. InternetOpenUrl
    3. HttpQueryInfo (到这一步可以取得文件大小)
    ......
      

  2.   

    http第一个包的包头有文件的大小,
      

  3.   

     SendStr:=SendStr+'HEAD   /'+FileName+'   HTTP/1.0'+#13#10;   
      SendStr:=SendStr+'Accept:   */*'+#13#10;   
      SendStr:=SendStr+'Host:   '+Host+#13#10;   
      SendStr:=SendStr+#13#10;   
      ClientSocket.Socket.SendText(SendStr);   
      while   ClientSocket.Active   do   
      begin   
          FStr:=TStringStream.Create('');   
          FSocketStream:=   TWinSocketStream.Create(ClientSocket,   TimeoutInt);   
          while   ClientSocket.Connected   do   
          begin   
              if   not   FSocketStream.WaitForData(TimeoutInt)   then   Break;   
              ZeroMemory(@Buf,SizeOf(Buf));   
              Res   :=   FsocketStream.Read(Buf,   1);   
              if   Res=0   then   break;   
              FStr.Write(Buf,Res);   
              if   Pos(#13#10,FStr.DataString)<>0   then   
              begin   
                  Break;   
              end;   
          end;   
          CmdStr:=FStr.DataString;   
          if   Pos(LowerCase('Content-Length:   '),LowerCase(CmdStr))=1   then   
          begin   
              ValueInt:=StrToInt(Copy(CmdStr,Length('Content-Length:   ')+1,Length(CmdStr)));   
          end;   
      end;
    代码在这里了,原理如楼上所说