Existe alguma maneira de obter o tamanho de um arquivo remoto sem baixá-lo?

5

É possível obter o tamanho de um arquivo remoto sem baixá-lo? O arquivo é sobre HTTP, não (S) FTP. Eu quero saber disso porque quero fazer o download de algo enquanto estiver conectado a um plano sem fio 3G limitado e não quero usar toda a minha largura de banda em um único pop. Eu não tenho acesso ao servidor, em tudo. Então eu não posso fazer nada do lado do servidor. Eu estou no Mac OS X. Soluções que fazem uso da linha de comando são um plus, mas não são necessárias.

A propósito, o arquivo específico que eu quero informações é o download de MP3 este site .

    
por Wuffers 25.01.2011 / 22:53

3 respostas

4

Você pode fazer isso obtendo o cabeçalho Content-Length , desde que seja HTTP.

Uma maneira de fazer isso na linha de comando é com curl , por exemplo:

chris@chris-laptop:~$ curl -I -L http://www.fakkelbrigade.eu/chris/movies/drosovol1_final_h264_download.mp4
HTTP/1.1 200 OK
Date: Tue, 25 Jan 2011 22:22:51 GMT
Server: Apache/2.2.16 (Debian)
Last-Modified: Tue, 11 Jan 2011 16:32:52 GMT
ETag: "3aa003-1b0c3479-49994a2c6f500"
Accept-Ranges: bytes
Content-Length: 453784697
Content-Disposition: attachment
Content-Type: application/octet-stream

Content-Length está em bytes.

    
por 25.01.2011 / 23:19
1

Você pode emitir solicitações HTTP HEAD para obter os únicos dados do cabeçalho. Content-Length é o que você quer.

$ telnet superuser.com 80
Trying 64.34.119.12...
Connected to superuser.com.
Escape character is '^]'.
HEAD / HTTP/1.0

HTTP/1.1 302 Found
Content-Length: 141
Location: http://stackexchange.com
Date: Tue, 25 Jan 2011 22:21:28 GMT
Connection: close
    
por 25.01.2011 / 23:23
0

Depende de como o servidor está configurado e do arquivo. Com a maioria dos arquivos, o servidor os envia nos cabeçalhos, mas pode ser um arquivo dinâmico e, portanto, não sabe (e seu navegador não pode adivinhar quanto tempo levará.

tobylane $ telnet stackexchange.com 80

Experimentando 64.34.119.12 ...

Conectado ao stackexchange.com.

O caractere de escape é '^]'.

GET /

HTTP / 1.1 302 encontrado

Localização: link

Data: Ter, 25 Jan 2011 22:01:22 GMT

Conexão: fechar

Não sei ao certo o que é uma boa solicitação (GET / trabalhou em outros sites), mas espero que isso ajude.

    
por 25.01.2011 / 23:02

Tags