⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 httpfile.pas

📁 p2pdbanywhere 可以通过之udp方式远程连接数据库的组件,这个组件非常好,是Delphi7,9,2006能够使用,包含源码.
💻 PAS
字号:
unit HttpFile;

interface

uses
  SysUtils, Classes,IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdHTTP,dialogs{$ifdef ver140},idsocks{$endif};

type
  THttpFile = class(TComponent)
  private
    FProxyIp:string;
    FProxyPort:integer;
    FProxyUserName:string;
    FProxyPassWord:string;
    http: TIdHTTP;
    procedure setproxyip(value:string);
    procedure setproxyport(value:integer);
    procedure setproxyusername(value:string);
    procedure setproxypassword(value:string);
    { Private declarations }
  protected
    { Protected declarations }
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    Function GetString(RemoteFile:string):string;
    function GetFile(RemoteFile,LocalFile:string;OverWrite:boolean):boolean;
    function GetStream(RemoteFile:string;GetFileStream:TMemoryStream):boolean;
    { Public declarations }
  published
    { Published declarations }
    property ProxyIp:string read FProxyIp write setproxyip;
    property ProxyPort:integer read FProxyPort write setproxyport;
    property ProxyUserName:string read FProxyUserName write setproxyusername;
    property ProxyPassWord:string read FProxyPassWord write setproxypassword;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('DbAnyWhere', [THttpFile]);
end;
constructor THttpFile.Create(AOwner: TComponent);
begin
  http:=TidHttp.Create(nil);
  self.FProxyPort:=808;
  {$ifdef ver140}
  self.FProxyPort:=1080;
  {$endif}
  inherited Create(AOwner);
end;
destructor THttpFile.Destroy;
begin
  http.Free;
  inherited Destroy;
end;
procedure THttpFile.setproxyip(value:string);
begin
  Self.FProxyIp:=value;
  {$ifndef ver140}
  http.ProxyParams.ProxyServer:=value;
  {$else}
  http.SocksInfo.Host:=value;
  if length(value)>0 then
  begin
    http.SocksInfo.Version:=svSocks5;
    http.SocksInfo.Authentication:=saUsernamePassword;
  end else http.SocksInfo.Version:=svNoSocks;
  {$endif}
end;
procedure THttpFile.setproxyport(value:integer);
begin
  if value<=0 then
  begin
    showmessage('端口设置无效!');
    abort;
  end;
  self.FProxyPort:=value;
  {$ifndef ver140}
  http.ProxyParams.ProxyPort:=value;
  {$else}
  http.SocksInfo.Port:=value;
  {$endif}
end;
procedure THttpFile.setproxyusername(value:string);
begin
  self.FProxyUserName:=value;
  {$ifndef ver140}
  http.ProxyParams.ProxyUsername:=value;
  {$else}
  http.SocksInfo.UserID:=value;
  {$endif}
end;
procedure THttpFile.setproxypassword(value:string);
begin
  self.FProxyPassWord:=value;
  {$ifndef ver140}
  http.ProxyParams.ProxyPassword:=value;
  {$else}
  http.SocksInfo.Password:=value;
  {$endif}
end;
Function THttpFile.GetString(RemoteFile:string):string;
begin
try
  result:=http.Get(RemoteFile);
except
  //on E:exception do
  //showmessage(e.Message);
end;
end;
function THttpFile.GetFile(RemoteFile,LocalFile:string;OverWrite:boolean):boolean;
var
   filestream:Tmemorystream;
begin
filestream:=Tmemorystream.Create;
try
   http.Get(RemoteFile,filestream);
   //判断是否存在
   if (FileExists(LocalFile))and(not Overwrite) then
   begin
     result:=false;
     filestream.Free;
     exit;
   end;
   filestream.SaveToFile(LocalFile);
   filestream.Free;
   result:=true;
except
  on E:exception do
  begin
    result:=false;
    if filestream<>nil then filestream.Free;
    //showmessage(e.Message);
  end;
end;

end;
function THttpFile.GetStream(RemoteFile:string;GetFileStream:TMemoryStream):boolean;
var
   filestream:Tmemorystream;
begin
filestream:=Tmemorystream.Create;
try
   http.Get(RemoteFile,filestream);
   GetFileStream.LoadFromStream(filestream);
   result:=true;
   filestream.Free;
except
  on E:exception do
  begin
    result:=false;
    if filestream<>nil then filestream.Free;
    //showmessage(e.Message);
  end;
end;

end;

end.
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -