Delphi DLL
Delphi DLL
Download a Zip from a URL and OpenBd. (No .zip file is created)
See more Zip Examples
Demonstrates how to download a .zip from a URL, opens the Zip, and gets the contents of a file. No file is ever written.Chilkat Delphi DLL Downloads
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Http, BinData, StringBuilder, ZipEntry, Zip;
...
procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
http: HCkHttp;
bd: HCkBinData;
zip: HCkZip;
entry: HCkZipEntry;
lineEndingBehavior: Integer;
xmlStr: PWideChar;
sb: HCkStringBuilder;
begin
success := False;
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
http := CkHttp_Create();
bd := CkBinData_Create();
// This URL is valid and can be tested...
success := CkHttp_QuickGetBd(http,'https://chilkatdownload.com/example_data/hamlet.zip',bd);
if (CkHttp_getLastMethodSuccess(http) = False) then
begin
Memo1.Lines.Add(CkHttp__lastErrorText(http));
Exit;
end;
zip := CkZip_Create();
// Open the zip from the bytes contained in bd.
success := CkZip_OpenBd(zip,bd);
if (success = False) then
begin
Memo1.Lines.Add(CkZip__lastErrorText(zip));
Exit;
end;
// Get the entry for the file we want..
entry := CkZipEntry_Create();
success := CkZip_EntryOf(zip,'hamlet.xml',entry);
if (success = False) then
begin
Memo1.Lines.Add(CkZip__lastErrorText(zip));
Exit;
end;
// Convert all line endings to CRLF (if needed)
lineEndingBehavior := 2;
xmlStr := CkZipEntry__unzipToString(entry,lineEndingBehavior,'utf-8');
if (CkZipEntry_getLastMethodSuccess(entry) = False) then
begin
Memo1.Lines.Add(CkZipEntry__lastErrorText(entry));
Exit;
end;
// The XML in this case is about 274K, so let's just examine the last 20 lines...
sb := CkStringBuilder_Create();
CkStringBuilder_Append(sb,xmlStr);
Memo1.Lines.Add(CkStringBuilder__lastNLines(sb,20,True));
CkHttp_Dispose(http);
CkBinData_Dispose(bd);
CkZip_Dispose(zip);
CkZipEntry_Dispose(entry);
CkStringBuilder_Dispose(sb);
end;