2010-07-17 48 views

Respuesta

1

No se puede en javascript (¡lo siento incluso mágico jQuery no puede ayudar aquí!). Necesitaría un script del lado del servidor para buscar la imagen y calcular el tamaño que podría devolver a su página.

Nota: downvoters ¡cuidado, el OP no posee el dominio de Google!

+0

Cualquier contenido descargable tiene un tamaño y hay algunas formas bien definidas de recuperar esa información. – Manfre

+0

@ user326404 no en js Tengo miedo – redsquare

+1

@redsquare - Eso es incorrecto. var xhr = new XMLHttpRequest(); xhr.open ('HEAD', 'http: //whatever.file.git', true); xhr.onreadystatechange = function() { if (xhr.readyState == 4) { if (xhr.status == 200) { alert ('Tamaño en bytes:' + xhr.getResponseHeader ('Content-Length'))); } } }; xhr.send (null); – bmelton

3

que podría hacer una petición HEAD HTTP para el URL de la imagen. Esto devolverá los encabezados HTTP, que incluyen la longitud del contenido (tamaño del archivo a.k.a.). Esto requiere una solicitud adicional al servidor, que no es muy eficiente cuando se genera la imagen en lugar de ser servida de forma estática.

+0

inteligente! Es bueno saber :) – johnjohn

3

Yo no sé de ninguna manera única de conseguir consistentemente el tamaño del archivo exacta, pero si usted está dispuesto a saltar a través de algunos aros, usted podría:

1) Estimación basada en las dimensiones y el tipo de archivo. Debido a las técnicas de compresión, hay una amplia variación, pero probablemente puedas ejecutar algunas estadísticas y proponer una heurística medio decente.

2) En IE, use la propiedad fileSize de una imagen. En otros navegadores compatibles con Canvas, use la técnica descrita en in this question on getting image data in JavaScript para captar la URL de datos, luego haga los cálculos (multiplique por 3/4, ya que base64 es un aumento de tamaño de 4/3).

Editar

3) La sugerencia de que otros han dado (en particular, según se especifica en la pregunta vinculada en la respuesta de Fabien Bernede) sobre conseguir encabezados HTTP es brillante y precisa. Probablemente se encuentre en conflicto con las restricciones de dominio cruzado en algunos casos, pero probablemente sea el método más consistente y efectivo.

+1

seguramente el método más 'consistente' y efectivo es un proxy del lado del servidor para tomar la imagen y evaluarla! – redsquare

+0

Totalmente correcto, y vale la pena señalarlo al asker: simplemente asumí que tenían algunas limitaciones o intereses, lo que significaba que harían esto solo con JavaScript. –

-3

$ FileSize = strlen (file_get_contents ($ imageSrcTag)) // < - php

+1

Pregunte javascript. ¿Qué tipo de respuesta es esa? – erm3nda

Cuestiones relacionadas