2010-07-17 4 views

Répondre

1

Vous ne pouvez pas en javascript (désolé, même jQuery magique ne peut pas aider ici!). Vous auriez besoin d'un script côté serveur pour récupérer l'image pour vous et calculer la taille que vous pourriez revenir à votre page.

Remarque - Attention les utilisateurs en basse altitude, l'OP ne possède pas le domaine google!

+0

Tout contenu téléchargeable a une taille et il y a quelques façons bien définies de récupérer ces informations. – Manfre

+0

@ user326404 pas dans js J'ai peur – redsquare

+1

@redsquare - C'est incorrect. var xhr = new XMLHttpRequest(); xhr.open ('HEAD', 'http: //whatever.file.git', true); xhr.onreadystatechange = function() { if (xhr.readyState == 4) { if (xhr.status == 200) { alert ('Taille en octets:' + xhr.getResponseHeader ('Content-Length')); } } }; xhr.send (null); – bmelton

3

Vous pourriez faire une requête HTTP HEAD pour l'URL de l'image. Cela renverra les en-têtes HTTP, qui incluent la longueur de contenu (taille de fichier a.k.a.). Cela nécessite une requête supplémentaire au serveur, ce qui n'est pas très efficace lorsque l'image est générée au lieu d'être traitée de manière statique.

+0

Smart! Bon à savoir :) – johnjohn

3

Je ne connais pas d'une seule façon d'obtenir systématiquement la taille du fichier exacte, mais si vous êtes prêt à sauter à travers des cerceaux, vous pouvez:

1) Estimation basée sur les dimensions et le type de fichier. En raison des techniques de compression, il y a de grandes variations, mais vous pourriez probablement faire des statistiques et trouver une heuristique à moitié décente.

2) Dans IE, utilisez la propriété fileSize d'une image. Dans les autres navigateurs prenant en charge Canvas, utilisez la technique décrite in this question on getting image data in JavaScript pour saisir l'URL dataURL, puis faites le calcul (multipliez par 3/4, car base64 est une augmentation de taille 4/3).

Modifier

3) Les autres suggestions ont donné (en particulier exposé dans la question liée à la réponse de Fabien Bernède) à obtenir en-têtes HTTP est brillante et précise. Dans certains cas, cela va probablement à l'encontre des restrictions interdomaines, mais c'est probablement la méthode la plus cohérente et la plus efficace.

+1

sûrement la méthode la plus «cohérente» et efficace est un proxy côté serveur pour saisir l'image et l'évaluer! – redsquare

+0

Tout à fait correct, et mérite d'être noté au demandeur - J'ai simplement supposé qu'ils avaient des contraintes ou des intérêts, ce qui signifiait qu'ils le feraient uniquement avec JavaScript. –

-3

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

+1

Asker dit javascript. Quel genre de réponse est-ce? – erm3nda

Questions connexes