📄 httpfile.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 + -