Pergunta

Eu queria saber se havia uma maneira de usar jQuery para descobrir o tamanho do arquivo para um PDF que estou ligando para uma página web.

Eu quero fazê-lo de modo a que em pairando sobre o link de download, uma caixa modal aparece dizendo que o tamanho do arquivo de PDF. Eu posso fazer o segundo bit, a única coisa que eu gostaria de saber é como descobrir o tamanho do arquivo. Eu não sei se jQuery é capaz disso. Se não, então muito ruim eu acho ..

Cheers antecipadamente.

Foi útil?

Solução

Eu sinto que isso é demais para estar a fazer do lado do cliente, mas eu não sei os detalhes da sua aplicação, de modo presumindo que você tem que fazer isso com jQuery ... você pode fazer um pedido cabeça e olhar em o cabeçalho conteúdo de comprimento. Anteriormente eu recomendado o plugin jqHead, mas depois que eu tentei usá-lo eu achei que ele estava quebrado.

Aqui está um exemplo de trabalho que não depende de quaisquer plugins extras: http: / /host.masto.com/~chris/so/jqhead.html

A carne é muito simples:

  var request;
  request = $.ajax({
    type: "HEAD",
    url: $("#url").val(),
    success: function () {
      alert("Size is " + request.getResponseHeader("Content-Length"));
    }
  });

Outras dicas

Aqui está trabalhando trecho para encontrar o tamanho do arquivo em JavaScript sem ir para o servidor, se você está prestes a fazer o upload do arquivo para o servidor.

Esta ideia ajuda a restringir o tamanho do arquivo antes de carregar arquivos grandes para o servidor.

<input type="file" id="loadfile" />
<input type="button" value="find size" onclick="findSize()" />
<script type="text/javascript">
    function findSize() {
        var fileInput = $("#loadfile")[0];
        alert(fileInput.files[0].size); // Size returned in bytes.
    }    
</script>

Se você sabe o tamanho do arquivo de antemão, você pode colocar isso no atributo título do link de download. Você também pode usar jQuery para mostrar um pop-up personalizado.

Caso contrário, não há nenhuma maneira para obter apenas o tamanho do arquivo (conteúdo de comprimento) de um URL sem realmente fazer o download de todo o conteúdo AFAIK.

A única maneira que eu posso pensar de fazer isso seria criar um serviço web que iria retornar o tamanho do arquivo do PDF.

Na resposta acima, Chrome 21 e Safari 6 não têm um membro fileSize, mas tem tamanho. Use:

fileInput.files [0] .size

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top