2010-05-27 4 views
0

Est-il possible d'obtenir le chemin complet du fichier sur l'ordinateur de l'utilisateur en train d'être téléchargé sur mon site? En utilisant os.path.abspath(fileitem.filename), j'obtiens simplement l'adresse d'où mon script s'exécute depuis mon serveur d'hébergement partagé (Obtenir le chemin du fichier téléchargé en utilisant Python

).

Pour votre information: fileitem = forme [ 'fichier'] et la forme = cgi.FieldStorage()

Répondre

5

Non, ces informations ne sont pas envoyées par l'utilisateur, il est donc pas disponible sur votre fin

+0

Il semble qu'il pourrait être fait avec JavaScript. Une fonction pourrait lire le chemin du champ de navigation, le mettre dans un champ de texte caché et le soumettre avec le formulaire? – Ali

+0

JavaScript s'exécute à la fin de l'utilisateur distant. Python fonctionne sur votre serveur CGI. Ce que vous dites est vrai, vous pourriez combiner les deux technologies. – Johnsyweb

0

Pour compléter la réponse - IE < = 7 utilisé pour envoyer le chemin de fichier complet au lieu du nom de fichier seulement, mais IE 8 a changé le paramètre par défaut et envoie uniquement le fichier noms pour privacy reasons.

Même si le client a bien envoyé le dossier complet chemin, de nombreuses solutions basées sur le Web (PHP par exemple, Django) supprimera le chemin et laisser le nom de fichier que, protéger l'application contre les attaques path traversal. La bibliothèque cgi de Python n'en fait pas partie.

Alors - oui, vous êtes en mesure d'obtenir le chemin complet du fichier avec Python cgi, mais seulement si le client a envoyé en utilisant IE < = 7.

Questions connexes