2009-09-17 8 views
26

Me preguntaba si había una forma de usar jQuery para averiguar el tamaño del archivo para un PDF que estoy vinculando a una página web.Encontrar el tamaño del archivo detrás del enlace de descarga con jQuery

Quiero hacerlo de modo que al pasar el ratón sobre el enlace de descarga, aparezca un cuadro modal que diga el tamaño del archivo del PDF. Puedo hacer lo segundo, lo único que me gustaría saber es cómo averiguar el tamaño del archivo. No sé si jQuery es capaz de esto. Si no, es muy malo, supongo ..

Saludos por adelantado.

+0

posible duplicado de [Obtener el tamaño del archivo solicitado a través de AJAX] (http://stackoverflow.com/questions/1484303/get-size-of-file- requested-via-ajax) – user2284570

Respuesta

46

Siento que esto es demasiado para estar al lado del cliente, pero no sé los detalles de su aplicación, por lo que supongo que tiene que hacerlo con jQuery ... puede hacer una solicitud HEAD y mirar en el encabezado Content-Length. Anteriormente, recomendé el plugin jqHead, pero después de tratar de usarlo, descubrí que estaba roto.

Aquí hay un ejemplo que no depende de ningún tipo de plugins adicionales: http://host.masto.com/~chris/so/jqhead.html

La carne de ello es muy simple:

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

Básicamente estaba escribiendo una respuesta que sugería una solicitud HEAD, pero también me la ganaste. Puede ayudar a mostrar el código para hacerlo con/sin el complemento. – eyelidlessness

+0

Impresionante, pero los desarrolladores deberían notar que la privacidad del dominio se lleva a cabo aquí :) – ValeriiVasin

+0

A lo que @InviS decía, intenta usar 'http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min. js', que está en otro dominio – vol7ron

0

Si conoce el tamaño del archivo de antemano, puede ponerlo en el atributo de título del enlace de descarga. También puede usar jQuery para mostrar una ventana emergente personalizada.

De lo contrario, no hay forma de obtener solo el tamaño de archivo (contenido-longitud) de una URL sin descargar realmente todo el contenido de AFAIK.

0

La única forma en que puedo pensar para hacer esto sería crear un servicio web que le devuelva el tamaño del archivo del PDF.

12

Aquí está trabajando fragmento de encontrar el tamaño del archivo en javascript sin ir al servidor, si está por subir el archivo al servidor.

Esta idea ayuda a restringir el tamaño del archivo antes de cargar archivos grandes en el 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> 
+0

@Kyle Sevenoaks: Lo siento, Kyle. Estaba jugueteando con eso , Volví al tuyo :) – Skurmedel

+0

Heh, no se preocupe :) – Kyle

+2

Eso no funcionó para mí en IE8 - Sin embargo, Firefox estaba bien. – wdanda

0

En la respuesta anterior, Chrome 21 y Safari 6 no tenían un miembro fileSize, pero tienen tamaño. Uso:

fileInput.files [0] .size

Cuestiones relacionadas