Éditer: Comment retourner/servir un fichier à partir d'un contrôleur python (back end) sur un serveur web, avec le nom de fichier? comme suggéré par @JVRetour du fichier à partir du module python
Répondre
entièrement pris en charge à l'aide CherryPy
from cherrypy.lib.static import serve_file
Comme indiqué dans le CherryPy docs - FileDownload:
import glob
import os.path
import cherrypy
from cherrypy.lib.static import serve_file
class Root:
def index(self, directory="."):
html = """<html><body><h2>Here are the files in the selected directory:</h2>
<a href="index?directory=%s">Up</a><br />
""" % os.path.dirname(os.path.abspath(directory))
for filename in glob.glob(directory + '/*'):
absPath = os.path.abspath(filename)
if os.path.isdir(absPath):
html += '<a href="/index?directory=' + absPath + '">' + os.path.basename(filename) + "</a> <br />"
else:
html += '<a href="/download/?filepath=' + absPath + '">' + os.path.basename(filename) + "</a> <br />"
html += """</body></html>"""
return html
index.exposed = True
class Download:
def index(self, filepath):
return serve_file(filepath, "application/x-download", "attachment")
index.exposed = True
if __name__ == '__main__':
root = Root()
root.download = Download()
cherrypy.quickstart(root)
L'indentation de la classe ' Télécharger' est éteint. Le retour n'est pas sous la méthode 'index' et l'utilisation de 8 espaces est incohérente avec les 4 espaces utilisés ailleurs. – Swoogan
Vous pouvez soit renvoyer une référence au fichier lui-même, c'est-à-dire le chemin d'accès complet au fichier. Ensuite, vous pouvez ouvrir le fichier ou le manipuler autrement. Ou, le plus normal est de renvoyer la poignée de fichier et d'utiliser les opérations standard de lecture/écriture sur la poignée de fichier.
Il est déconseillé de transmettre les données réelles car les fichiers peuvent être trop grands et le programme peut manquer de mémoire.
Dans votre cas, vous voulez probablement retourner un tuple contenant le fichier ouvert, le nom du fichier et toute autre méta-données qui vous intéresse.
Pour plus d'informations sur les types MIME (qui sont comment les téléchargements se produisent) , commencez ici: Properly Configure Server MIME Types.
Pour plus d'informations sur CherryPy, regardez les attributs d'un objet Response. Vous pouvez définir le content type de la réponse. En outre, vous pouvez utiliser tools.response_headers pour définir le type de contenu.
Et, bien sûr, il y a un exemple de File Download.
simplement corriger le lien (faute de frappe) de http: //https//developer.mozilla.org/en/Properly_Configuring_Server_MIME_Types à https://developer.mozilla.org/en/Properly_Configuring_Server_MIME_Types –
- 1. Installation du module python
- 2. python Nom du fichier de la classe du module MySQL
- 3. Appelez Python à partir du fichier Bat et obtenez le code de retour
- 4. Retour des fichiers uniquement à partir du dossier spécifique
- 5. Création d'un seul fichier exe à partir du code Python
- 6. Obtention du chemin de fichier du module importé
- 7. Python Modification des variables du module dans un autre module
- 8. Automatiser Photoshop pour insérer du texte à partir du fichier
- 9. Retour du tableau à partir de la méthode
- 10. Définition du curseur personnalisé à partir du fichier de ressources
- 11. Chargement dynamique du contenu NSPopUpButton à partir du fichier XML
- 12. Rails import à partir du fichier Excel
- 13. DataGridView à partir du fichier binaire
- 14. Lecture à partir du fichier en eclipse
- 15. onload à partir du fichier js externe
- 16. Comment obtenir le nom de fichier du module __main__ en Python?
- 17. Sortie du fichier shell d'analyse avec Python
- 18. retour du contrôleur rails
- 19. Exemple d'utilisation de msilib pour créer un fichier .msi à partir d'un module python
- 20. Exécution du code python à partir de l'application Cocoa standard
- 21. trouver le nom du module de l'exception d'origine en Python
- 22. ASP.NET MVC: renvoi du fichier texte brut à télécharger à partir de la méthode du contrôleur
- 23. Module: référence à un autre module du desciptor
- 24. Comment obtenir un fichier modifié à partir du fichier de base et du fichier diff?
- 25. Test des dépendances du module Python en cours d'installation
- 26. Détermination du nom de fichier (ouvert) à partir d'un fichier *
- 27. python - match sur la valeur de retour du tableau
- 28. Envoyer une requête HTTP à partir du fichier VC++
- 29. Comment importer un module à partir d'un répertoire au niveau au-dessus du script
- 30. Utilisation du multitraitement Python lors de l'importation d'un module via un chemin de fichier
La question est incomplète, je suppose. Vouliez-vous renvoyer/servir un fichier à partir d'un contrôleur python (back end) sur un serveur Web, avec un ensemble et un nom de type mime appropriés? –
Cela n'a presque rien à voir avec Python. Ceci est une question sur le type de retour HTTP. La manière dont vous définissez le type de retour dépend de votre serveur Web. Quel framework de serveur web utilisez-vous? –
@ S.lott - J'utilise cherrypy. Comment puis-je envoyer le nom de fichier avec la réponse cherrypy? –