J'utilise FTPLIB pour transférer des fichiers. Tout fonctionne bien. Maintenant, j'essaie d'obtenir la taille du fichier cible avant de télécharger. P>
Tout d'abord, j'ai essayé de recevoir une taille avec ftp.size (nom de fichier). Serveur s'est plaint de savoir que je ne peux pas le faire en mode ASCII. P> li>
Puis j'ai essayé de définir le mode binaire à l'aide de ftp.sendcmd ("binaire") et ftp.sendcmd ("bin"). Dans les deux cas, le serveur s'est plaint "500 binaires non compris" p> li> ol>
FTPLIB peut-il obtenir la taille d'un fichier avant de télécharger dans ce cas? Je ne contrôle pas le serveur FTP et je ne peux pas changer comment cela se comporte. P>
merci p>
3 Réponses :
FTPLIB peut obtenir la taille d'un fichier avant de télécharger. Comme la documentation indique: p>
ftp.size (nom de fichier) Demander la taille de Le fichier nommé nom de fichier sur le serveur. Sur le succès, la taille du fichier est retourné comme un entier, sinon aucun est retourné. Notez que la taille la commande n'est pas standardisée, mais est soutenu par de nombreux serveurs communs Implémations strong> p> blockQuote>
Apparemment, votre serveur ne prend pas en charge cette fonctionnalité. P>
"serveur s'est plaint de savoir que je ne peux pas le faire en mode ASCII." - Essayez de montrer le code exact que vous avez utilisé et du texte exact de la réponse du serveur. Utilisez Copy / Coller, ne tapez pas de la mémoire.
Avez-vous accès à un client FTP de ligne de commande? Sinon, en obtenir un. Utilisez-le pour expérimenter ce que le serveur peut faire. Une commande client comme RemoteHelp est votre ami. Exemple: p> ceci indique que le serveur auquel j'ai été connecté prendra en charge une commande taille. P> p>
réponse très tardive, mais voici la bonne réponse. Cela fonctionne avec le proftapd.
ftp.sendcmd("TYPE i") # Switch to Binary mode ftp.size("/some/file") # Get size of file
Par souci de complétude: pour revenir à ASCII, utilisez type A code>