Προς το περιεχόμενο

c# έλεγχος timestamp αρχείου


Haros

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα,

 

θέλω στην c# να ελέγξω το timestamp ενός αρχείου στο internet, πριν το κατεβάσω.

Γνωρίζει κάποιος πως μπορεί να γίνει;

 

Ευχαριστώ.

Δημοσ.

Γεία σου

 

Απ' όσο ξέρω, για να δεις το timestamp ενός αρχείου πρέπει να έχεις πρόσβαση σε αυτό. Αυτό γίνεται είτε με το να το κατεβάσεις, είτε να έχεις απομακρυσμένη πρόσβαση στο μηχάνημα που βρίσκεται το αρχειο. Εναλλακτικά, αν μιλάμε για καποια client/server εφαρμογή, θα μπορούσε ο server να παρέχει αυτή τη πληροφορία στο client, είτε κατα σύμβαση να περιλαμβάνεται το timestamp στο filename του αρχειου (του στυλ myfile_20110408_1232pm.txt κτλ).

 

Παρολαυτά, αν υπάρχει άλλη λύση θα ήθελα να τη μάθω και εγώ

Δημοσ.

Αν μιλάμε για πρόσβαση μέσω πρωτοκόλλου 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 με τον αγιοβασιλίτικο κόκκινο σκούφο! :-D

Δημοσ.

Με βάση αυτά που έγραψε ο 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(); 

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...