如何检查zipfile是否已被下载

时间:2015-10-15 11:11:16

标签: delphi

我制作了一个Delphi应用程序,它定期下载zipfile(update.zip)。在zip文件中有DLL和Exe。 zip文件被解压缩,DLL和Exes被复制到正确的文件夹。

我想知道的是如何知道客户端是否已经下载了zipfile,因此不必再次下载。因为它已经由客户处理。但是当zipfile的内容发生了变化时 它必须再次下载zipfile。

如果我们构建一个新的DLL或Exe,zip文件的内容可能会改变。但是zipfile的名称是相同的。

2 个答案:

答案 0 :(得分:0)

如果您想在不下载zip文件的情况下知道zip文件是否已更改,那么您的服务器必须提供其他方式来发现服务器上的DLL和EXE的版本。这可能就像在服务器上保留文本文件一样简单。下载该文件而不是整个zip文件。如果该文本文件中的版本比本地版本更新,则下载zip文件。

您还可以在第一次处理完zip文件后删除它来避免处理。您可以将文本文件版本与磁盘上实际文件的版本进行比较,而不是将文本文件中的版本与本地zip文件中的文件版本进行比较。

答案 1 :(得分:0)

你可以做一个HTTP HEAD;并检查服务器上的文件最后修改日期和本地(如果已更改)下载新文件。

uses
......, IdHTTP;
function getHTTPLastModified(url: string): TDateTime;
var
  HTTP: TIdHTTP;
begin
  try
    try
      HTTP := TIdHTTP.Create(nil);
      HTTP.Head( url );
      result:=HTTP.Response.LastModified;
    except
      on E: Exception do
         //ShowMessage('ProcessHttpRequest failed.');
         result := 0;
    end;
  finally
    try
      HTTP.Disconnect;
    except
    end;
  end;
end;