Ako zistiť dátum súboru uloženého na webe   zodpovězená otázka

VB.NET, WinForms

Dobrý deň, potreboval by som zistiť dátum súboru uloženého na webe pre potreby aktualizácie. Súbor sťahujem cez WebClient ale predtým by som potreboval zistiť jeho dátum aby sa súbor nesťahoval zbytočne pokiaľ už užívateľ má aktuálnu verziu. Zistiť dátum už stiahnutého súboru uloženého na lokálnom disku je ľahké ale ako zistiť dátum súboru na webe sa mi zatiaľ zistiť nedarí. Za pomoc vopred ďakujem.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Trochu googlu a je to...

http://stackoverflow.com/questions/19060...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Toto řešení je chybné (soubor se stahuje vždy), správné řešení je to co je u něho uvedeno v komentářích a sice, že:

V requestu na stažení souboru je nutné poslat hlavičku If-Modified-Since s hodnotou odpovídající datu a času lokální verze stahovaného souboru.

Na serveru dojde k porovnání s datem souboru na serveru a pokud je na serveru novější verze, bude obsah soubor vrácen a odpověď bude 200 OK.

Pokud je na serveru verze stejná (nebo starší), nebude obsah souboru vrácen a bude vrácena odpověď 304 Not Modified. Tím se soubor nebude stahovat zbytečně.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Previedol som to do VB.NET (prekladač)


       Dim gameFile As HttpWebRequest = CType(WebRequest.Create("http://www.g......./u.txt"), HttpWebRequest)
        Dim gameFileResponse As HttpWebResponse = CType(gameFile.GetResponse(), HttpWebResponse)

        Dim DatumSuboru As DateTime = DateTime.Now   'Dátum súboru u užívateľa
        gameFile.IfModifiedSince = DatumSuboru

        Dim localFileModifiedTime As DateTime = File.GetLastWriteTime("C:\temp\u.txt")
        Dim onlineFileModifiedTime As DateTime = gameFileResponse.LastModified

        If localFileModifiedTime >= onlineFileModifiedTime Then
            'NO update

        Else
            'Download new Update

        End If

Ak som Vás správne pochopil teraz by to malo byť asi takto ? Momentálne to nemôžem odskúšať VStudio mám doma.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ne, jak píšu nahoře, tento kód je právě to špatné řešení.

Vlastní porovnání data souboru je právě potřeba nechat na server. Klient musí již v requestu vytvářet tu hlavičku If-Modified-Since a pak kontrolovat odpověď.

Kód klienta bude tedy vycházet např. z příkladu zde:

http://msdn.microsoft.com/en-us/library/...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ďakujem za rady, podľa toho čo ste napísali sa teda k dátumu súboru asi nedostanem.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback