2009-04-17 8 views
2

J'ai écrit un script CGI python qui convertit les fichiers en .jpgs et les affiche dans une simple page HTML. Je ne veux pas encombrer les dossiers avec ces fichiers .jpg, donc j'ai utilisé tempfile.NamedTemporaryFile pour créer un fichier pour stocker la sortie .jpg converti. Tout fonctionne très bien, mais je veux supprimer ce fichier après l'affichage de la page. Actuellement, j'ai delete = False set, mais je ne peux pas sembler supprimer le fichier sans causer un lien img cassé.Comment puis-je supprimer un fichier temporaire (image) affiché par CGI?

Répondre

3

Vous ne pouvez pas supprimer le fichier de votre script cgi. Parce que la page html est envoyée à l'utilisateur seulement après que votre script a fini de s'exécuter. Et puis le navigateur des utilisateurs analyser le code HTML et récupérer le fichier jpg.

L'option la plus simple est d'écrire les fichiers temporaires dans un sous-répertoire et de nettoyer périodiquement ce répertoire (en y résidant les dernières minutes seulement). Il existe des moyens d'améliorer ce processus, mais ils sont probablement inutiles.

Une option plus avancée (qui est probablement inutile, selon votre scénario) consiste à configurer le serveur Web pour exécuter un script sur la requête "get jpg". Et puis vous pouvez diffuser le jpg à travers votre script. De cette façon, vous saurez quand le jpg a été récupéré. Et dans ce script, vous pouvez appeler un indice de manière asynchrone pour supprimer le fichier jpg.

Questions connexes