10
votes

Comment déterminer la taille du fichier en JavaScript?

J'aide à modérer un forum en ligne et sur ce forum, nous limitons la taille des signatures. Pour le moment, nous testons cela via un simple script greasemonkey que j'ai écrit; nous enveloppons toutes les signatures avec un

, le script les cherche, puis mesure la hauteur et la largeur de la div.

Tout le script fait maintenant est sûr que la signature réside dans un particulier hauteur largeur. Je voudrais commencer à mesurer la taille du fichier des images à l'intérieur d'une signature, de sorte que le script puisse automatiquement signaler les utilisateurs qui incluent d'énormes images dans leur signature. Cependant, je ne peux pas sembler trouver un moyen de mesurer la taille des images chargées sur la page. J'ai cherché et trouvé une propriété spéciale à IE (element.filesize) mais je ne peux évidemment pas l'utiliser dans mon script greasemonkey.

est un moyen de trouver la taille du fichier d'une image dans Firefox via JavaScript?

Edit: Les gens sont mal interprétés par le problème. Les forums eux-mêmes n'hébervent pas des images; Nous hébergeons le BBCode que les gens entrent comme signature. Donc, par exemple, les gens entrent ceci: xxx

Je veux pouvoir vérifier ces images via Greasemonkey. Je pourrais écrire un script de lot pour les numériser à la place, mais je me demandais simplement s'il y a un moyen d'augmenter mon script actuel.


0 commentaires

10 Réponses :


0
votes

Vous pouvez définir une taille de fichier maximale dans votre code HTML où ils téléchargent des fichiers. xxx

(max_file_size en octets).

Cependant, il s'agit d'un "non-documenté / "article non pris en charge de certains navigateurs. Vous préférez réellement vérifier la fichible sur le serveur une fois que vous avez été téléchargée.

Vous pouvez également utiliser un applet Flash ou Java pour gérer le téléchargement et vérifier le fichier de téléchargement. Voir http://www.masrizal.com /Product/custom%20tag/cf_flashmultiupload/docs%20&%20examples/example.cfm et http://www.saschawenning.de/labor/flash8/fileeupload/ pour des exemples.


1 commentaires

Vous avez mal compris, les gens peuvent relier des images de l'extérieur des forums. En fait, nous n'hébergons aucune image de signature nous-mêmes.



5
votes

Comme vous le savez, c'est-à-dire, c'est-à-dire supportant la propriété de fichier de fichiers d'une image. Pas de chance dans d'autres navigateurs ... Toutefois, vous devriez être en mesure de modifier ce script:

http://natbat.net/2008/aug/27/addsizes/

Il utilise JSON pour lire des en-têtes HTTP de fichiers et afficher sa taille de fichier réelle. Cela devrait vous aider à empêcher les personnes de télécharger de gros gifs d'animation.

comme pour obtenir les dimensions: xxx

Ceci est une approche pure-côté du client Quelque chose de mieux manipulé côté serveur.


1 commentaires

Les gens ne téléchargent pas d'images sur nos serveurs. Ils lien vers des images sur d'autres serveurs. S'ils utilisent des images dynamiques de quelque sorte, nous ne pouvons donc pas valider la taille de l'image sur le serveur.



3
votes

réponse courte, vous ne pouvez pas

En outre, vérifiez sur jguru Comment vérifier la taille du fichier de JavaScript dans une forme avec un type d'entrée de fichier?

Vous trouverez des points importants

Eh bien, la réponse est très simple, vous ne pouvez pas.

Raison: la sécurité du navigateur ne permet pas les scripts (JavaScript / VBScript) ou même des applets et des contrôles ActiveX à lire fichiers du disque dur local. Vous ne pouvez lire que des fichiers si votre code est signé par une autorité de certification (CA). Maintenant le type d'entrée "Fichier" n'a également pas la permission de lire des fichiers. Nous ne pouvons pas faire quoi que ce soit à ce sujet depuis c'est ce que dit HTML. Donc, depuis qu'il ne peut pas lire des fichiers, il ne peut pas trouver la taille du fichier avec lequel l'entrée tag est associé. Comme il ne peut pas trouver la taille du fichier, il n'y a pas de Fonction exposée par JavaScript / VBScript pour renvoyer la taille du fichier. Mais Si vous avez besoin de trouver la taille du fichier, dites-leur afin de limiter la taille. du fichier téléchargé sur votre serveur Web. Alors vous pouvez le faire par Compter le contenu du fichier sur le côté serveur, une fois que l'utilisateur soumet c'est au serveur. C'est ce que bon nombre des fournisseurs de messagerie gratuits comme www.hotmail.com DO.


2 commentaires

Veuillez inclure les portions pertinentes de cette page. Si ce lien meurt, votre réponse devient sans valeur.


@ amr-elgarhy, Stackoverflow.com/Questtions/2966076/ ...



0
votes

L'attribut DOM img.filesize retournera la taille réelle du fichier de référence référencée . L'accès à l'objet IMG peut être obtenu à l'aide de la collection JQuery ou de DOM 'Images'. Cependant, il s'agit d'une extension IE SEULEMENT.

Une autre approche consiste à omettre les attributs de hauteur et de largeur de la balise , de sorte que l'image complète soit téléchargée, puis utilisez img.height et img.Width pour déterminer la taille de l'image téléchargée. Ce code pourrait être placé dans la page d'éditeur de profil de l'utilisateur comme une étape intermédiaire entre une personne entrant dans sa signature en tant que HTML, puis leur indiquant un aperçu de leur signature. Clunky, je dois admettre, mais possible.


1 commentaires

La hauteur et la largeur sont une mauvaise mesure pour la définition, d'autant plus que les pires délinquants sont des personnes qui téléchargent des gifs d'animation.



1
votes

La validation du côté client est insuffisante pour atteindre votre objectif. Une demande de post simple permettra à l'utilisateur de télécharger n'importe quelle image qu'ils souhaitent, quel que soit le HTML ou JavaScript que vous les servez.


2 commentaires

Je ne pense pas que vous comprenez ce que je demande, j'ai mis à jour le PO pour mieux refléter la tâche à accomplir. (Les gens ne téléchargent rien sur le serveur, à l'exception du code qui pointe vers des images.)


La validation de la taille est requise ... Par exemple, son gestionnaire de fichiers et son centre de téléchargement ... Si vous recevez un film et un film avec plus de taille, le serveur reçoive des données inutilisées



0
votes

Si vous êtes inquiet d'énormes images, définissez une taille maximale de téléchargement comme Richy C. mentionné, mais redimensionnez également l'image téléchargée sur le serveur et utilisez la version redimensionnée.

Facebook Cela pour la plupart des images téléchargées de sorte que des images de taille raisonnablement sont servies. Même la convertir au format PNG dans certains cas (la plupart?), Qui conduisent les noix de groupe créatif en raison de la "qualité perdue".


0 commentaires

0
votes

Ce que vous devriez pouvoir faire est une demande de tête Ajax de l'URL d'image, qui obtient simplement l'en-tête du fichier plutôt que le contenu, de même que beaucoup plus vite. L'un des en-têtes que vous recevrez est une longueur de contenu, et cela vous indiquera la taille de l'image en octets.

plus Détails ici .


0 commentaires

2
votes

Validation latérale du serveur est toujours un meilleur pari, mais dans votre cas, je peux voir pourquoi vous voudriez faire ce côté-là.

En outre, il semble que d'autres personnes aient mal interprété la question et que les images qui Daniel veut tester des tests déjà téléchargés, auquel cas il existe une méthode assez simple. . Cet exemple fonctionne dans FF3 et probablement 2. Étant donné que vous utilisez Greasemonkey pour le faire, la compatibilité du navigateur ne semble pas être un problème.

Je ne suis pas certain si Greasemonkey partage les mêmes restrictions de domaine XML RPC , mais si les fichiers d'images dont vous avez besoin sont sur un domaine différent de celui du script, vous devrez peut-être rechercher une magie Iframe.


0 commentaires

0
votes

Vous pouvez faire ce fichier fichier HTML5 JS API

Vous pouvez tester exécuter les codes ci-dessous dans mon IDE Web (mais veuillez utiliser Google Chrome ou FF): http://codesocialisci.com/#/?s=bn

Les codes ci-dessous récupèrent le fichier de type et de la fichifie pour vous :) xxx


0 commentaires

5
votes

En fait, avec HTML5, c'est maintenant possible,
En savoir plus Informations ici .


0 commentaires