Haros Δημοσ. 13 Απριλίου 2011 Δημοσ. 13 Απριλίου 2011 Καλησπέρα, θέλω στην c# να ελέγξω το timestamp ενός αρχείου στο internet, πριν το κατεβάσω. Γνωρίζει κάποιος πως μπορεί να γίνει; Ευχαριστώ.
georgemarios Δημοσ. 15 Απριλίου 2011 Δημοσ. 15 Απριλίου 2011 Γεία σου Απ' όσο ξέρω, για να δεις το timestamp ενός αρχείου πρέπει να έχεις πρόσβαση σε αυτό. Αυτό γίνεται είτε με το να το κατεβάσεις, είτε να έχεις απομακρυσμένη πρόσβαση στο μηχάνημα που βρίσκεται το αρχειο. Εναλλακτικά, αν μιλάμε για καποια client/server εφαρμογή, θα μπορούσε ο server να παρέχει αυτή τη πληροφορία στο client, είτε κατα σύμβαση να περιλαμβάνεται το timestamp στο filename του αρχειου (του στυλ myfile_20110408_1232pm.txt κτλ). Παρολαυτά, αν υπάρχει άλλη λύση θα ήθελα να τη μάθω και εγώ
parsifal Δημοσ. 15 Απριλίου 2011 Δημοσ. 15 Απριλίου 2011 Αν μιλάμε για πρόσβαση μέσω πρωτοκόλλου HTTP, τότε δοκίμασε να στείλεις ένα HTTP HEAD request για το αρχείο που θέλεις και έλεγξε αν στην απάντηση που επιστρέφει ο συγκεκριμένος server περιλαμβάνεται header με ονομασία Last-Modified. Δυστυχώς, δε στέλνουν όλοι οι HTTP servers αυτόν τον header απαραίτητα και ακόμη κι αν το κάνουν, δεν είναι εγγυημένα έγκυρη η τιμή του. Μπορεί π.χ. να τρέχει από πίσω κάποιο script που παράγει δυναμικά το περιεχόμενο, ακόμη κι αν εμείς νομίζουμε ότι ζητήσαμε στατικό περιεχόμενο όπως ένα (φαινομενικά) direct download link. Π.χ. ο nginx server που χρησιμοποιεί το Insomnia, για το URL του avatar image μου, επιστρέφει: >C:\Program Files (x86)\GnuWin32\bin>wget --server-response --spider http://www.insomnia.gr/uploads/av-43041.png SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc syswgetrc = C:\Program Files (x86)\GnuWin32/etc/wgetrc Spider mode enabled. Check if remote file exists. --2011-04-15 11:26:11-- http://www.insomnia.gr/uploads/av-43041.png Resolving www.insomnia.gr... 62.1.42.20 Connecting to www.insomnia.gr|62.1.42.20|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: nginx/0.6.32 Date: Fri, 15 Apr 2011 08:29:55 GMT Content-Type: image/png Content-Length: 5406 Last-Modified: Wed, 12 Jan 2011 14:18:22 GMT Connection: keep-alive Expires: Sun, 15 May 2011 08:29:55 GMT Cache-Control: max-age=2592000 Accept-Ranges: bytes Length: 5406 (5.3K) [image/png] Remote file exists. 12 Ιανουαρίου ακούγεται μάλλον σωστό, γιατί περίπου τότε πρέπει να το ανέβασα αντικαθιστώντας τη γιορτινή version με τον αγιοβασιλίτικο κόκκινο σκούφο!
At0m0 Δημοσ. 15 Απριλίου 2011 Δημοσ. 15 Απριλίου 2011 Με βάση αυτά που έγραψε ο parsifal, δοκίμασε κάτι σαν το παρακάτω... (Πηγή) > using System.Net; ... ... Uri url = new Uri("http://www.insomnia.gr/uploads/av-43041.png"); // Creates an HttpWebRequest for the specified URL. HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url); // Sends the HttpWebRequest and waits for response. HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); // Displays all the headers present in the response received from the URI. Console.WriteLine("\r\nThe following headers were received in the response:"); // Displays each header and it's key associated with the response. for(int i=0; i < myHttpWebResponse.Headers.Count; ++i) Console.WriteLine("\nHeader Name:{0}, Value :{1}",myHttpWebResponse.Headers.Keys[i],myHttpWebResponse.Headers[i]); // Releases the resources of the response. myHttpWebResponse.Close();
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.