U trendu

Delphi – Download fajlova sa Interneta

Ako je neka od vaših aplikacija oslonjena na dinamičke biblioteke (DLL), a one se recimo, povremeno osvežavaju, treba će vam dosta vremena da odete do svakog vašeg klijenta i zamenite postojeće biblioteke novim. Ali to možemo izbeći ugradnjom „auto-update“ opcije u aplikaciju koja bi recimo, „skidala“ sa Interneta najnovije verzije biblioteka. Znači, potrebno je izgradimo malu FTP proceduru.
<P ALIGN="justify" Delphi nam omogućava da preko HTTP (Hypertext Transfer Protocol) i FTP (File Transfer Protocol) protokola, a uz pomoć API funkcije WinInet, pristupimo i download-ujemo bilo koji fajl sa Interneta. tako na primer, možemo koristiti funkcije unutar WinInet API-ja da dodamo FTP browser bilo kojoj aplikaciji, da kreiramo aplikaciju koja automatski „skida“ fajlove sa javnih FTP servera ili možda da pretražuje u potrazi za grafičkim fajlovima. Evo kako treba da izgleda funkcija za download fajlova:


uses Wininet;

function PreuzmiFile(const fileURL, FileName: String): boolean;
const BufferSize = 1024;
var
hSession, hURL: HInternet;
Buffer: array[1..BufferSize] of Byte;
BufferLen: DWORD;
f: File;
sAppName: string;
begin
Result:=False;
sAppName := ExtractFileName(Application.ExeName);
hSession := InternetOpen(PChar(sAppName),
INTERNET_OPEN_TYPE_PRECONFIG,
nil, nil, 0);
try
hURL := InternetOpenURL(hSession,
PChar(fileURL),
nil,0,0,0);
try
AssignFile(f, FileName);
Rewrite(f,1);
repeat
InternetReadFile(hURL, @Buffer,
SizeOf(Buffer), BufferLen);
BlockWrite(f, Buffer, BufferLen)
until BufferLen = 0;
CloseFile(f);
Result:=True;
finally
InternetCloseHandle(hURL)
end
finally
InternetCloseHandle(hSession)
end
end;


Kada smo u Unit ubacili prethodnu funkciju, preostaje samo da je pozovemo odnekle iz programa. Ovo možemo da uradimo na sledeći način:


var FileNaInternetu, LokalniNazivFile: string
begin
FileNaInternetu:=’lokacija/arhiva.zip’;
LokalniNazivFile:=’File sa Net-a.zip’

if PreuzmiFile(FileNaInternetu,LokalniNazivFile)=True then
ShowMessage(‘Download uspesan!’)
else
ShowMessage(‘Greska pri download-u!’)

end;

Pratite Krstaricu i preko mobilne aplikacije za Android i iPhone.