Considérez l'exemple suivant: Et si je veux serveur un fichier zip aussi ... Comment ferais-je cela?
Je ne pense pas que cette ligne fonctionnerait bien? P> self.wfile.write(f.read())
3 Réponses :
Votre ligne fonctionnerait bien. Le problème définirait le type type code> de manière appropriée. Vous voudrez la définir sur
application / zip code> au lieu de
texte / html code>. P>
C'est vrai, mais j'avais déjà fait ça. Josefassad a identifié le problème que j'avais eu. Mais tu es correct.
Pass Binary comme paramètre à ouvrir (). Ceci: au lieu de ceci: p> Unix ne distingue pas entre binaire et texte, mais Windows fait. Mais si le script s'exécute sur UNIX, le "B" sera simplement ignoré de sorte que vous êtes en sécurité. P> p>
Et en Python 3, Python fait une différence entre les fichiers binaires et textos, de sorte que vous puissiez aussi bien mettre le drapeau correct déjà maintenant. :)
Si vous souhaitez partager des fichiers dans un dossier de n'importe quel type, vous pouvez également essayer de saisir la commande Ceci démarrera le serveur au port 8000 et vous pouvez parcourir les fichiers ( via la liste des répertoires) p> p>
Quelqu'un peut-il expliquer pourquoi l'appel à ouvrir () "rend potentiellement chaque fichier sur votre ordinateur lisible"? Et comment protégeriez-vous contre cela pour servir des fichiers dans cet exemple?
@brooksbp Je pense qu'il signifie que l'utilisateur pourrait saisir un chemin qui naviguerait dans un autre répertoire de votre ordinateur, par exemple en montant un ou plusieurs répertoires. Mais seuls les fichiers HTML sont accessibles à l'aide du code ci-dessus.