2012-08-22 23 views
8

Sto scaricando file di immagini dal web utilizzando il seguente codice nella mia applicazione console.Ottieni dimensioni del file immagine prima di scaricarlo dal web

WebClient client = new WebClient(); 
client.DownloadFile(string address_of_image_file,string filename); 

Il codice funziona perfettamente.

Voglio sapere se c'è un modo per ottenere la dimensione di questo file immagine prima di scaricarlo.

PS- In realtà ho scritto codice per creare un crawler che si muove nel sito scaricando i file di immagine. Quindi non conosco le sue dimensioni in anticipo. Tutto quello che ho è il percorso completo del file che è stato estratto dalla fonte della pagina web.

+0

Eventuali duplicati di [Get http: /.../ File Size] (http: // StackOverflow .com/questions/122853/get-http-file-size) – Francis

risposta

6

Se il servizio Web fornisce un'intestazione HTTP Content-Length, sarà la dimensione del file immagine. Tuttavia, se il servizio web vuole "trasmettere" i dati all'utente (usando la codifica di Chunk), non si saprà fino a quando non verrà scaricato l'intero file.

7

Ecco un semplice esempio si può provare se si dispone di file di diverse estensioni come .gif, .jpg, etc è possibile creare una variabile o inserire il codice all'interno di un interruttore di istruzione case

System.Net.WebClient client = new System.Net.WebClient(); 
client.OpenRead("http://someURL.com/Images/MyImage.jpg"); 
Int64 bytes_total= Convert.ToInt64(client.ResponseHeaders["Content-Length"]) 
MessageBox.Show(bytes_total.ToString() + " Bytes"); 
+0

Funziona come un incantesimo per me, ma dopo il terzo utilizzo arresta tutto e si blocca. Ho persino provato a chiamare client.Dispose() ma non sta aiutando ... Hai idea del motivo per cui ciò potrebbe accadere? Grazie! – Thpramos

+0

puoi mostrarci la traccia dello stack dello schianto? – knocte

0

Dovresti dare un'occhiata a questa risposta: C# Get http:/…/File Size dove la tua domanda è completamente spiegata. Usa la richiesta HEAD HTTP per recuperare la dimensione del file, ma puoi anche leggere l'intestazione "Content-Length" durante la richiesta GET prima di leggere il flusso di risposta.

+0

-1. O renderlo commento o aggiungere un riassunto del link alla risposta. –

+0

Le domande e le risposte nel collegamento specificato non richiedono spiegazioni ed è difficile aggiungere qualcosa. Non voglio copiare la risposta dal post originale. Comunque, grazie per il commento, lo terrò in considerazione in futuro. – Perevalov

+0

Benvenuti in SO. Si prevede che le risposte di SO contengano il riassunto di un link - controlla [FAQ] (http://stackoverflow.com/questions/how-to-answer) - "Fornisci contesto per i link". –

2

È possibile utilizzare un HttpWebRequest per interrogare il metodo HEAD del file e controllare il Content-Length nella risposta

Problemi correlati