Django servant un fichier de téléchargement
Je suis en train de servir un fichier txt généré avec un peu de contenu et je vais avoir quelques problèmes. Je'vecreated les fichiers temp et écrit le contenu à l'aide de NamedTemporaryFile et juste définir supprimer à false pour déboguer cependant le fichier téléchargé ne contient rien.
Ma conjecture est que les valeurs de réponse ne sont pas fait pour le bon fichier, hense rien n'est téléchargé, voilà mon code:
f = NamedTemporaryFile()
f.write(p.body)
response = HttpResponse(FileWrapper(f), mimetype='application/force-download')
response['Content-Disposition'] = 'attachment; filename=test-%s.txt' % p.uuid
response['X-Sendfile'] = f.name
source d'informationauteur Callum | 2013-04-03
Vous devez vous connecter pour publier un commentaire.
Avez-vous envisagé d'envoyer des
p.body
par le biais de laresponse
comme ceci:XSend nécessite le chemin d'accès au fichier dans
response['X-Sendfile']
Ainsi, vous pouvez le faire
Ici,
path_to_file
est le chemin complet vers le fichier (et pas seulement le nom du fichier)Caisse django-extrait de
Il peut y avoir plusieurs problèmes avec votre approche:
f.flush()
comme mentionné dans le commentaire ci-dessusNamedTemporaryFile
est supprimé à la fermeture, ce qui pourrait arriver juste à la sortie de votre fonction, de sorte que le serveur web n'a aucune chance de ramasserX-Sendfile
Peut-être qu'il serait préférable d'utiliser StreamingHttpResponse au lieu de créer des fichiers temporaires et
X-Sendfile
...