Avatar billede styrk Nybegynder
01. april 2006 - 13:19 Der er 13 kommentarer og
1 løsning

Tjekke fil version

Hejsa.

Jeg har lavet et program som henter diverse filer fra internettet til brugeren.

Jeg kunne godt tænke mig at få lavet på en eller anden måde så den tjekker om den fil man har er den samme som den der bliver hentet.

Hvordan kan et lige ordnes? :)

På forhånd tak!
Avatar billede driis Nybegynder
01. april 2006 - 13:42 #1
Sammen med de filer, der skal hentes fra nettet, kan du placere en fil indholdende hashkoder for alle filerne. Dit program kan så hente disse hashes og sammenligne med de filer, der findes i forvejen. Hvis de er ens, er der ingen behov for at at hente de "rigtige" filer.
Avatar billede styrk Nybegynder
01. april 2006 - 14:01 #2
Ja den havde jeg tænkt på men synes det bliver formeget administration hvis jeg skal lave filer of hashes..

Kan det ikke gøres anderledes?
Avatar billede driis Nybegynder
01. april 2006 - 14:08 #3
Du er nødt til at have noget at sammenligne på, og hvis det ikke skal være hele filen; er det mest oplagte at bruge en hash-værdi. Administrationen af det kan du undgå ved at lave en applikationen, der automatisk beregner hashkoderne når der bliver bedt om det.

Hvis hentning af filer foregår over HTTP; vil det være ret nemt at lave en ASP .NET (eller noget andet serverside) applikation, der gør dette.

Du kan evt. nøjes med at sammenligne timestamp og filstørrelse for filerne; men det kræver at du kan aflæse dette uden at hente hele filen - og metoden er heller ikke 100% pålidelig; men alt efter hvad du skal bruge det til, kan det muligvis være en mulighed.
Avatar billede styrk Nybegynder
01. april 2006 - 14:41 #4
Jeg kan ikke få en hash-værdi via C# ? Filerne bliver hentet via HTTP yes.
Avatar billede driis Nybegynder
01. april 2006 - 14:45 #5
Hashværdien skal beregnes på serveren; ellers skal du alligevel overføre hele filen til dit program, før hashværdien kan beregnes - og så forsvinder det smarte ligesom ved metoden.
Avatar billede styrk Nybegynder
01. april 2006 - 14:47 #6
ja det kan jeg godt se... skal lige tænke lidt hvad jeg gør ;p
Avatar billede arne_v Ekspert
01. april 2006 - 16:48 #7
hvis serveren er tilpas informativ kunne du proeve med:

send HEAD request
sammenlign ContentLength med den fil du har
hvis ens så
    send conditional GET request med tid for den fil du har
ellers
    hent fordi de så er forskellige
Avatar billede mikkelbm Nybegynder
01. april 2006 - 21:33 #8
Der er nogle Microsoft gutter der har lavet et spændende projekt, hvor de blandt andet bruger BITS downloaderen til at hente filer med (der er også lavet HTTP downloaders):

http://practices.gotdotnet.com/projects/updater

Om ikke andet kan du se al koden og dokumentationen og måske blive inspireret til hvordan det kan gøres.

Jeg har selv kort prøvet kræfter med projektet og det virker faktisk ganske glimrende.
Avatar billede styrk Nybegynder
04. april 2006 - 20:56 #9
hmm :O
Avatar billede mikkelbm Nybegynder
04. april 2006 - 21:12 #10
?
Avatar billede styrk Nybegynder
04. april 2006 - 21:19 #11
ja jeg stener bare lidt over hvordan jeg lige skal gøre :)
Avatar billede arne_v Ekspert
07. april 2006 - 02:32 #12
til inspiration:

using System;
using System.Net;

namespace E
{
    public struct WebInfo
    {
        public long size;
        public DateTime time;
    }
    public class WebChecker
    {
        public static WebInfo Check(string url)
        {
            WebInfo inf = new WebInfo();
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
            req.Method = "HEAD";
            HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
            inf.size = resp.ContentLength;
            inf.time = resp.LastModified;
            return inf;
        }
    }
    public class TestClass
    {
        private static void Test(string url)
        {
            WebInfo inf = WebChecker.Check(url);
            Console.WriteLine(url + " " + inf.size + " " + inf.time);
        }
        public static void Main(string[] args)
        {
            Test("http://www.eksperten.dk/img/elogo.png");
            Test("http://www.tmk.com/ftp/vms-freeware/fileserv/unzip.zip");
        }
    }
}
Avatar billede styrk Nybegynder
08. april 2006 - 19:53 #13
ja jo tak, det kan vidst godt bruges.. smid svar :)
Avatar billede arne_v Ekspert
19. juni 2006 - 01:55 #14
Svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester