我的要求是,每天会在我的服务器上产生几百张图片,用户通过我的软件查看图片,但不一定会全部看这些图片,所以我想看一张我保留一张,每次显示图片的时候,把这张图片与网络上的图片对比一下,如果图片没有更新,就直接显示本(Timage)图片,如果同一张图片有更新或是没有显示过,就通过webbrowser显示,再把临时文件保存下来。现在问题是,图片通过webbrowser显示后产生的临时文件在internet临时文件夹中,第一如何与服务器文件对比,第二,把这个文件备份到我想要的指定目录下后,还能不能与服务器上的文件对比,如何对比。
另外:能不能这样,都用Timage显示,1。如果没有下载,用什么方法可以直接用Timage显法网络上的图片,而且只要显示过而且网络上没有更新,我就直接本地显示。2.如果我将图片下载到我指定的目录中,如何判断该图片有没有更新。

解决方案 »

  1.   

    利用idhttp下载文件到本地的实现。
    procedure TForm1.Button6Click(Sender: TObject);
    var
            mStr : string;
    begin
            //showmessage(idhttp1.Version);
            IdHttp1.HandleRedirects := True;
            IdHttp1.Get('http://www.softhy.net/down.asp?id=9586&no=1');
            //mStr := IdHttp1.Get('http://www.zgzcw.com');
            showmessage(mStr);
    end;procedure TForm1.IdHTTP1Redirect(Sender: TObject; var dest: String;
      var NumRedirect: Integer; var Handled: Boolean;
      var VMethod: TIdHTTPMethod);
    begin
            showmessage(dest);
    end;procedure TForm1.IdHTTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
    var
            mFileStream: TFileStream;
    begin
            //showmessage(idhttp1.Response.ContentType);
            mFileStream := TFileStream.Create('d:\test.rar',fmCreate);
            mFileStream.CopyFrom(IdHttp1.Response.ContentStream,0);
            mFileStream.Destroy;
    end;jpeg文件有exif信息,可用于记录一些文件信息,比如生成时间,拍照相机型号等,可以利用相关字段来判断是否为新文件。
    exif的说明可以参见:http://www.exshow.net/download/exif.htm,很详细的(据说是小日本写的,学学也无妨)
      

  2.   

    你可以先用一个列表文件,表示服务器上的图片的信息。
    然后和本地的比较,如果本地的是旧的,就后台下载下来,然后再给用户看,不要通过webbrowser
      

  3.   

    to FigoZhu(谢慕安)
    行是可行,不知道还有没有更简单或是更少利用网络数据的判断方法
      

  4.   

    有的,但你要认真看一下http协议,可以通过idhttp向web服务器发送一个查询报文,可以先得到url目标对象的更新日期,或者把你目前存储的文件日期发送上去,由对方决定是否向你传送相关的内容。类似IE打开一个网页时,先检查是否需要对里面的元素进行重新下载的机制。
      

  5.   

    把数据库图片的地址存到数据库当中,在delphi中显示网页来控制