天天操夜夜爱_天天插天天操天天干_黄色av地址_成人黄色在线观看_国内久久久久久_欧美国产日韩一区二区三区_国产精品久久久久久久久晋中

電腦主機系統(tǒng)下載文件

發(fā)布時間: 2023-04-16 15:47 閱讀: 文章來源:轉載

1.1 使用 urlmon 下載文件

urlmon.dll內(nèi)置于Windows中,可用于從網(wǎng)站下載文件。它支持SSL/TLS連接。但僅限Windows;

在 uses 語句中添加 URLMon 單元。

URLDownloadToFile 函數(shù)原型:

function URLDownloadToFile(pCaller: pointer; URL: PChar; FileName: PChar; Reserved: DWORD; lpfnCB : pointer): HResult; stdcall; external 'urlmon.dll' name 'URLDownloadToFileA';

使用示例:

procedure TForm1.Button1Click(Sender: TObject);var Source, Dest: string;begin Source:='http://lazarus.freepascal.org'; Dest:='C:\Windows\temp\data.txt'; if URLDownloadToFile(nil, PChar(Source), PChar(Dest), 0, nil)=0 thenshowmessage('Download ok!') elseshowMessage('Error downloading '+Source);end;

1.2 使用 fphttpclient 下載文件

fphttpclient作為fcl web包的一部分隨FPC提供,也可以單獨使用。

在 uses 語句中添加 fphttpclient 單元。

我們可以使用 TFPHttpClient 類實例的 Get 方法來下載文件,示例代碼:

program dl_fphttp_d;{$mode delphi}{$ifdef windows}{$apptype console}{$endif}usessysutils, classes, fphttpclient, openssl,opensslsockets;constFilename = 'testdownload.txt';varClient: TFPHttpClient;FS: TStream;SL: TStringList;begin{ SSL initialization has to be done by hand here }InitSSLInterface;Client := TFPHttpClient.Create(nil);FS := TFileStream.Create(Filename,fmCreate or fmOpenWrite);trytry{ Allow redirections }Client.AllowRedirect := true;Client.Get('https://google.com/',FS); excepton E: EHttpClient dowriteln(E.Message)elseraise;end;finallyFS.Free;Client.Free;end;{ Test our file }if FileExists(Filename) thentrySL := TStringList.Create;SL.LoadFromFile(Filename);writeln(SL.Text);finallySL.Free;end;end.

1.3 使用 Synapse 下載文件

Synapse 提供串行端口和 TCP/IP 連接。它與其他庫不同,您只需要向代碼中添加一些 Synapse Pascal 源代碼文件;無需安裝軟件包等。唯一的例外是,如果您想使用SSL/TLS/SSH等加密,則需要外部加密庫。

Synapse 通過阻塞(同步)套接字或有限的非阻塞模式處理網(wǎng)絡通信。Synapse 未使用異步套接字。Synapse 包含簡單的低級非可視對象,便于無問題地進行編程。(無需多線程同步,無需windows消息處理,…)非常適合命令行實用程序、可視化項目、NT服務等。

在 Synapse 官方網(wǎng)站(http://www.ararat.cz/synapse/doku.php),還可以找到 Synapse 項目的一個補充,名為SynaSer。這是用于阻止串行端口上的通信的庫。它是Synapse中的非可視化類,程序員界面與Synapsee非常相似。

使用 Synapse 時,Lazarus、Delphi 需要安裝,CodeTyphon 默認已經(jīng)安裝 Synapse。

編寫下載文件程序時,在 uses 語句中添加 httpsend 單元。示例代碼:

...uses httpsend,...function DownloadHTTP(URL, TargetFile: string): Boolean;varHTTPGetResult: Boolean;HTTPSender: THTTPSend;beginResult := False;HTTPSender := THTTPSend.Create;tryHTTPGetResult := HTTPSender.HTTPMethod('GET', URL);if (HTTPSender.ResultCode >= 100) and (HTTPSender.ResultCode<=299) then beginHTTPSender.Document.SaveToFile(TargetFile);Result := True;end; finallyHTTPSender.Free;end;end;

1.4 綜合示例

使用以上三種方式下載文件。界面如下:

具體操作不再贅述,代碼如下:

unit unitmain;{$mode objfpc}{$H+}interfaceusesClasses, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, fphttpclient, httpsend, UrlMon;type{ TFormMain }TFormMain = class(TForm)SynapseDownButton: TButton;FPHttpClientDownButton: TButton;UrlDownButton: TButton;procedure SynapseDownButtonClick(Sender: TObject);procedure FPHttpClientDownButtonClick(Sender: TObject);procedure UrlDownButtonClick(Sender: TObject);privatepublicend;varFormMain: TFormMain;implementation{$R *.frm}{ TFormMain }procedure TFormMain.UrlDownButtonClick(Sender: TObject);varSource, Dest: String;beginSource := 'https://download.redis.io/releases/redis-6.2.1.tar.gz';Dest := 'e:\temp\redis-6.2.1.tar.gz';tryif UrlDownloadToFile(nil, PChar(source), PChar(Dest), 0, nil) = 0 thenShowMessage('文件下載成功')elseShowMessage('文件下載失敗');exceptShowMessage('文件下載失敗');end;end;procedure TFormMain.FPHttpClientDownButtonClick(Sender: TObject);varHttpClient: TFPHttpClient;DownLoadFile:TFileStream;beginDownLoadFile:=TFileStream.Create('e:\temp\redis-4.0.10.tar.gz',fmCreate);HttpClient := TFPHttpClient.Create(nil);tryHttpClient.AllowRedirect := True;HttpClient.Get('http://download.redis.io/releases/redis-4.0.10.tar.gz', DownLoadFile);ShowMessage('文件下載成功');exceptShowMessage('文件下載失敗');end;DownLoadFile.Free;HttpClient.Free;end;procedure TFormMain.SynapseDownButtonClick(Sender: TObject);varHTTPSender: THTTPSend;beginHTTPSender := THTTPSend.Create;tryHTTPSender.HTTPMethod('GET', 'http://download.redis.io/releases/redis-7.0.5.tar.gz');if (HTTPSender.ResultCode >= 100) and (HTTPSender.ResultCode<=299) thenbeginHTTPSender.Document.SaveToFile('e:\temp\redis-7.0.5.tar.gz');ShowMessage('文件下載成功');endelseShowMessage('文件下載失敗');exceptShowMessage('文件下載失敗');end;HTTPSender.Free;end;end.
???展開全文
相關文章
主站蜘蛛池模板: 99久久精品免费精品国产 | 日本精品二区 | 久久一区二区三区四区 | 国产一区二区三区久久小说 | 成zzzwww日本免费 | 欧美中文字幕在线观看 | 日本午夜在线视频 | xxx日本在线观看 | 国产成人啪午夜精品网站 | 青青草视频免费观看 | 欧美成人第一页 | 亚洲一区二区约美女探花 | 国产精选一区二区 | 免费激情网站 | 99精品在线免费观看 | 欧美日韩在线观看精品 | 日本wwwcom| 黄色在线观看网址 | 久久久久在线 | 人人干人人模 | 国产香蕉尹人综合在线 | 黄污污| 亚洲精品人成网在线播放影院 | 男人天堂日韩 | 好看的三级| 色97偷自拍亚洲综合图片 | 精品视频在线播放 | 青草园网站在线观看 | 国产成人91青青草原精品 | 视频在线一区二区 | 99国内视频| 欧美性猛 | 黄色片 在线播放 | 国产成人在线影院 | www.youjizz.com在线观看 | 69av网址| 男女在线无遮挡毛片免费 | 欧美亚洲国产人成aaa | 性色在线视频精品 | 69堂网站| 欧美成人一区二区三区 |