2016-12-28 5 views
1

Webサーバーに追加された最新ファイルの名前を検出しようとする正しい方法は何ですか? Indy HTTPSを使用してファイルをダウンロードしようとしています。ファイル名が動的に生成されるので、まずサーバー上に存在する最新のファイルの名前を判別する必要があります。Delphi Indy HTTPSは、Webサーバーから最新のファイルを検出します。

私は、ウェブサーバからファイルをダウンロードするには、次のコードを使用します。

function getIndyFile_from_https(const fileURL, FileName: String): boolean; 
var http:TIdHttp; 
    s:TFileStream; 
    i:integer; 
    FProgress: Integer; 
    FBytesToTransfer: Int64; 
    FOnChange: TNotifyEvent; 
    IOHndl: TIdSSLIOHandlerSocketOpenSSL; 
    protocol_url,fullurl,url_fara_protocol,host:string; 

begin 
http:=TIdHTTP.Create(nil); 
IOHndl := TIdSSLIOHandlerSocketOpenSSL.Create(nil); 
http.Request.BasicAuthentication := True; 
    //Request.Accept:='text/html,*/*'; 
    //Request.AcceptEncoding:='utf-8'; 
http.HandleRedirects := True; 
http.IOHandler := IOHndl; 
http.ReadTimeout := 30000; 
//http.OnWork := HTTPWork; 
//http.OnWorkBegin := HTTPWorkBegin; 
//http.OnWorkEnd := HTTPWorkEnd; 

    try 
    s:=TFileStream.Create(filename, fmcreate); 
    try 
     http.Get(fileUrl,s); 
     result:=true; 
    finally 
     s.free; 
    end; 
    finally 
    http.Free; 
    end; 
end; 

答えて

1

ファイルリストを取得する標準的なHTTPコマンドはありません。

特定のサーバーインストールによっては、指定されたパス/ディレクトリURLのファイルリストが返される場合がありますが、プログラムによってHTTP応答を解析する必要があります。

+0

私の前提を確認していただきありがとうございます。 – user2858981

1

この問題を処理するには、サーバー側のロジックが必要です。あなたのクライアントが要求できる特定の静的URLに応答して、サーバのいずれかを行う必要があります。

  1. は、ファイル自体でない場合は、最新のファイルを追跡し、そのファイル名を返します。

  2. は、使用可能なすべてのファイルとそのタイムスタンプを記述するディレクトリリストを提供します。リストを解析して最新のファイルを要求することができます。

+0

私の前提を確認していただきありがとうございます。 – user2858981

関連する問題