亚洲一级簧片_性 毛片_国产乱子视频_久久影城_强伦女教师视频_成人精品久久

電腦主機系統下載文件

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

1.1 使用 urlmon 下載文件

urlmon.dll內置于Windows中,可用于從網站下載文件。它支持SSL/TLS連接。但僅限Windows;

在 uses 語句中添加 URLMon 單元。

URLDownloadToFile 函數原型:

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

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

使用 Synapse 時,Lazarus、Delphi 需要安裝,CodeTyphon 默認已經安裝 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.
???展開全文
相關文章
主站蜘蛛池模板: 操女人在线 | 亚州av一区 | 国产综合激情 | 欧美一级毛片免费的视频 | 综合久久亚洲 | 精品99在线 | 亚洲国产欧美在线 | 久久久久久久婷婷 | 婷婷成人影院 | av日韩久久 | 欧美激情第二页 | 又爽又大又黄a级毛片在线视频 | 欧美精品一区三区 | 国产a免费 | 一区福利 | 97在线精品视频 | www.激情| 中文字幕av一区二区三区 | 日韩免费一区 | 福利电影在线观看 | 国产伦精品一区二区三区视频金莲 | 亚洲国产精品一区二区久久 | 亚洲香蕉av | 99久久国 | 成人国产在线视频 | 婷婷综合在线 | 91九色论坛 | 日韩中文av| 成人免费视频一区二区 | 自拍视频一区 | 爱情岛论坛首页永久网址 | 亚洲第1页 | 黄色成年视频 | 九九久久精品 | 欧美性猛交一区二区三区精品 | 亚洲免费精品 | 亚洲视频中文 | 免费黄色大片 | 色噜噜一区二区 | 91香蕉一区二区三区在线观看 | 国产精品麻豆一区二区 |