天天操夜夜爱_天天插天天操天天干_黄色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.
???展開全文
相關文章
主站蜘蛛池模板: 国产成+人+综合+亚洲 欧美 | 日本特级黄色录像 | 国产三级a三级三级天天 | 99这里精品 | 精品在线小视频 | 成人午夜性影院视频 | 国产一卡 | 人人99| 欧美高清一区二区三 | 亚洲一区二区三区影院 | 国产综合成色在线视频 | 在线观看免费a∨网站 | 日本视频中文字幕一区二区 | 国产亚洲精品xxx | 波多野结衣一区二区 三区 波多野结衣一区二区三区 波多野结衣一区二区三区四区 | 日本一区二区三区四区视频 | 青青青春在线观看免费2019 | 精品1卡二卡三卡四卡老狼 精品91精品91精品国产片 | 国产亚洲一区二区三区 | 日韩免费大片 | 无码av波多野结衣久久 | 波多野结衣一区 | 国产亚洲欧美日韩在线看片 | 欧美视频一区二区在线观看 | 久久亚 | 免费黄色的软件 | 夜夜春精品视频 | 亚洲成色www久久网站 | 久久91亚洲精品中文字幕 | 日韩免费影视 | 欧美色哟哟 | 人人搞人人干 | 黄 色带 电在线视频 | 亚洲精品天堂 | 日韩不卡在线视频 | 国产欧美在线观看不卡一 | 特黄aaaaaa久久片 | 天天干人人干 | 日韩久久精品 | 99精品国产成人a∨免费看 | 精品欧美亚洲韩国日本久久 |