Page 1 sur 1
[R] InetGetSize() Problème pour retour de la valeur?
Posté : mar. 05 oct. 2010 03:10
par Pollux
Bonjour à tous.
Me revoilà à utiliser la fonction InetGetSize() pour récupérer la taille de certains fichiers sur le net.
J'ai remarqué qu'il n'y a pas de soucis pour récupérer la taille de petits fichiers (585 octets par exemple).
En revanche, pour les fichiers grands ou de taille moyenne, ça me retourne très souvent 0, des fois ça me donne la bonne valeur (rare), ou des fois ça me donne 0 puis la bonne valeur une fois le cache d'internet explorer nettoyé.
J'essaye de repérer le problème mais je ne trouve pas de raison précise à ce retour de "0". J'ai déjà essayé les permissions CHMOD 777 sur le FTP où sont déposés les fichiers (j'ai même essayé un autre hôte web).
J'ai pensé que ça pouvait être le webhost, mais dans ce cas je ne vois pas pourquoi il me retourne bon dans certains cas et pas dans d'autres.
J'aurais aimé utilisé InetRead() mais il ne donne pas la taille du fichier, que le nombre de bytes lus
Le code de test utilisé, tout simple :
Code : Tout sélectionner
Local $nSize = InetGetSize("http://www.siteweb.com/dossier/lefichier.xyz")
MsgBox(0, "Size of remote file:", $nSize)
Version AutoIt : la plus récente
Version IE : 8
Toute aide serait la bienvenue.
Merci d'avance,
Pollux
Re: [..] InetGetSize() Problème pour retour de la valeur?
Posté : mer. 06 oct. 2010 00:32
par Tlem
Aucun problème de mon coté.
Si vous avez des exemples (liens) ce serait plus facile.
Avez-vous regardé du coté des options de la commande InetGetSize ?
Re: [..] InetGetSize() Problème pour retour de la valeur?
Posté : mer. 06 oct. 2010 17:36
par Pollux
Merci pour votre réponse
Voici un exemple de fichier qui me donne 0 en retour de taille avec INetGetSize :
Code : Tout sélectionner
Local $nSize = InetGetSize("http://www.iris.mezoka.com/TestFolder/Hamsters.txt")
MsgBox(0, "Size of remote file:", $nSize)
La taille du fichier (qui ne m'est pas renvoyée) est 4134543 octets.
Dans le pire des cas, je pourrais toujours indexer les tailles dans un fichier texte à part (vu que je connais les tailles des fichiers que je dépose), mais ça me trouble de ne pas savoir d'où ça vient
Pour les options, j'ai tout essayé également, mais le résultat est toujours 0.
Pollux
Re: [..] InetGetSize() Problème pour retour de la valeur?
Posté : jeu. 07 oct. 2010 00:31
par Tlem
J'obtiens aussi un retour de 0, mais si je tente d'accéder au fichier directement avec mon navigateur, j'ai une belle page d'erreur :
- Forbidden
You don't have permission to access
Je dirait donc qu'il est normal que
InetGetSize vous renvoie 0.
Cela signifie qu'il ne peut accéder au fichier.

Re: [..] InetGetSize() Problème pour retour de la valeur?
Posté : jeu. 07 oct. 2010 01:12
par Pollux
Tlem a écrit :J'obtiens aussi un retour de 0, mais si je tente d'accéder au fichier directement avec mon navigateur, j'ai une belle page d'erreur :
- Forbidden
You don't have permission to access
Je dirait donc qu'il est normal que
InetGetSize vous renvoie 0.
Cela signifie qu'il ne peut accéder au fichier.

Mes excuses, mauvaise extension.
avec ceci, vous obtenez 0 en renvoi mais pas de forbidden en tentant d'accéder à la page :
Code : Tout sélectionner
Local $nSize = InetGetSize("http://www.iris.mezoka.com/TestFolder/Hamsters.ini")
MsgBox(0, "Size of remote file:", $nSize)
Pollux
Re: [..] InetGetSize() Problème pour retour de la valeur?
Posté : jeu. 07 oct. 2010 08:13
par Tlem
Effectivement, cela ne fonctionne pas avec ce serveur.
Vous rentrez donc dans le cadre des situations exceptionnelles décrite dans la section Remarks de la commande
InetGetSize.
Remarks
Not all servers will correctly give the file size, especially when using a proxy server.
Peut être devriez-vous essayer de vous connecter comme indiqué dans la phrase qui précède cette remarque :
Re: [R] InetGetSize() Problème pour retour de la valeur?
Posté : jeu. 07 oct. 2010 11:14
par Pollux
Malheureusement ce n'est pas possible, car le programme que je code est destiné à un large éventail de personnes, donc mettre un login/pass est trop dangereux, même en obfuscant le code
On dirait donc que je n'ait pas de chance pour les webhosts utilisés.. Je vais rester sur mon autre solution (que je peux heureusement employer), un fichier contenant les tailles des fichiers déposés. C'est un peu plus fastidieux à faire mais ça marche bien tout en passant outre ce problème de "taille".
Merci pour votre support

Je passe en
[R]
Pollux
Re: [R] InetGetSize() Problème pour retour de la valeur?
Posté : jeu. 07 oct. 2010 17:25
par jchd
Cette "non-réponse" sur la taille est un problème courant. Je n'ai absolument pas le temps de creuser les docs (et encore, qui les respecte ?), mais il me semble que la réponse à ce type de requête est optionnelle. Du fait, si le serveur est chargé ou s'il le juge peu utile, il semble avoir le droit de ne pas répondre avec une information juste. De plus, comme l'illustre le coup du proxy, il y a maintenant tellement de complexité dans les architectures serveur que les données "simplement informationnelles" comme celle-ci ont facilement tendance à passer à la trappe. Par contre, les pubs ne courent que rarement ce risque. Allez comprendre !
Re: [R] InetGetSize() Problème pour retour de la valeur?
Posté : jeu. 07 oct. 2010 17:53
par Sh4dows
Changer le CHMOD du fichier peut être sait-on jamais :p
Pour ma part chez moi quand je fais ceci :
Code : Tout sélectionner
$nSize = InetGetSize("http://www.hide.com/f.txt")
MsgBox(0, "Size of remote file:", $nSize)
Il me retourne bien la valeur de f.txt...
Dans votre cas :
Me retourne 0 donc soit vous mettez le chmod à 777 ou comme moi à 644.
Après si cela ne change rien ce qui est probable tentez de le mettre à la racine de manière à donner :
Et si votre problème persiste il ne vous reste plus qu'a enlever la majuscule à "Hamsters" ou à prendre un autre hébergeur non gratuit

Re: [R] InetGetSize() Problème pour retour de la valeur?
Posté : jeu. 07 oct. 2010 20:34
par Pollux
Merci pour vos réponses
Pour le CHMOD 777 déjà tenté, ainsi que placer le fichier à la racine : Même souci.
Cela vient donc bien du webhost qui fait des siennes. Alala.. Unlucky, le Pollux
Si effectivement la requête est optionnelle, ça explique assez bien pourquoi j'ai le même souci sur plusieurs webhosts. Enfin bon étant donné que c'est gratuit, on ne peut pas avoir le beurre et l'argent du beurre
Je compte bien me payer un hébergement un jour, mais pour le moment je vais me contenter de contourner mon problème avec un fichier texte
Pollux