2009-03-18 15 views
16

Ho bisogno di un modo per controllare la dimensione di un download senza dover scaricare l'intero file. Sto usando C# e System.Net.WebClient per fare il download. Il controllo deve essere eseguito in un webservice asp.net.Controllo dimensione download prima del download

Grazie

risposta

17

Utilizzare il metodo HTTP HEAD per recuperare Content-Length: intestazione.

HEAD/HTTP/1.1 
Host: www.example.com 

HTTP/1.1 200 OK 
Date: Wed, 18 Mar 2009 11:21:51 GMT 
Server: Apache/2.2.3 (CentOS) 
Last-Modified: Tue, 15 Nov 2005 13:24:10 GMT 
ETag: "b80f4-1b6-80bfd280" 
Accept-Ranges: bytes 
Content-Length: 438 
Connection: close 
Content-Type: text/html; charset=UTF-8 
+1

Hi è possibile utilizzare il codice a questa pagina per ottenere effettivamente i dettagli (per chiunque che ha bisogno di informazioni) http://www.eggheadcafe.com/tutorials/aspnet/2c13cafc-be1c-4dd8-9129-f82f59991517 /the-lowly-http-head-reque.aspx – RC1140

+0

Supponendo che l'intestazione Content-Length sia presente. Sareste sorpresi dal numero di siti che non forniscono tali informazioni e da quanti non supportano nemmeno HEAD. –

+0

Cosa utilizzeresti come alternativa – RC1140

2

fare una testa (invece che GET o POST) richiesta per ottenere solo le intestazioni di risposta, questo dovrebbe includere l'intestazione Content-Length con le informazioni necessarie.

-1

È inoltre possibile utilizzare l'intestazione RANGE HTTP per scaricare solo i materiali desiderati.

Sarebbe davvero semplice creare un HttpRangeStream che supporti la ricerca e la lettura su una risorsa HTTP remota, se il server remoto è HTTP 1.1 e supporta correttamente le intestazioni RANGE.