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

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

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

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提供,也可以單獨(dú)使用。

在 uses 語句中添加 fphttpclient 單元。

我們可以使用 TFPHttpClient 類實(shí)例的 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)絡(luò)通信。Synapse 未使用異步套接字。Synapse 包含簡單的低級非可視對象,便于無問題地進(jìn)行編程。(無需多線程同步,無需windows消息處理,…)非常適合命令行實(shí)用程序、可視化項(xiàng)目、NT服務(wù)等。

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

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

編寫下載文件程序時(shí),在 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.
???展開全文
相關(guān)文章
主站蜘蛛池模板: 精品99久久久久久 | 欧美ⅹxxxxxx| 久久成人免费 | 亚洲电影一区 | 精品一区在线 | 99re8在线精品视频免费播放 | 久久69精品久久久久久久电影好 | 成年人小视频 | 一区二区三区视频 | 亚洲最大av网站 | 可以免费看av的网站 | 国产精品一区二区三区在线免费观看 | 青青草免费在线视频播放 | 91久久久久久久久 | 国产黄色免费网站 | 午夜网站在线观看 | 亚洲欧洲视频在线 | 日本老妇成熟 | 黄色一级大片在线观看 | 亚洲一区二区成人 | 精品性高朝久久久久久久 | 国产精品亚洲一区二区三区在线观看 | 中文字幕高清 | 在线观看久| 欧美高潮| 国产在线播放一区 | 91视频国产一区 | 精品国产免费久久久久久尖叫 | 欧美成人网视频 | 人人艹人人| 另类专区亚洲 | 日本成人在线网站 | 久国久产久精永久网页 | 亚洲成人精品久久久 | 欧美日韩国产综合另类 | av久色 | 99热只有精品在线观看 | 久久精品成人热国产成 | 国产精品久久久久久妇 | 青草精品 | 国产精品久久久久久久久久久久久久久 |