Maison > développement back-end > Tutoriel Python > Comment servir des fichiers téléchargeables dans Django sans utiliser d'URL et de vues standard ?

Comment servir des fichiers téléchargeables dans Django sans utiliser d'URL et de vues standard ?

Barbara Streisand
Libérer: 2024-11-28 17:02:10
original
840 Les gens l'ont consulté

How to Serve Downloadable Files in Django Without Using Standard URLs and Views?

Servir des fichiers téléchargeables dans Django : une approche globale

Servir des fichiers téléchargeables en toute sécurité est une exigence courante dans le développement Web. Django, un framework Web populaire en Python, propose plusieurs méthodes pour faciliter cette tâche. L'une de ces méthodes consiste à masquer les chemins de fichiers pour empêcher les téléchargements directs.

Dans ce scénario, le format d'URL souhaité est http://example.com/download/?f=somefile.txt, où somefile.txt réside dans le dossier home/user/files/ sur le serveur. La question se pose : comment Django peut-il livrer le fichier en téléchargement sans utiliser une URL et une vue standard ?

La solution X-Sendfile

Une solution efficace consiste à utiliser le Module X-Sendfile. Ce module exploite les serveurs Apache ou Lighttpd pour gérer le service de fichiers. Django génère le chemin du fichier ou le fichier lui-même, tandis que le serveur gère la livraison réelle du fichier.

Implémentation avec X-Sendfile

Pour intégrer X-Sendfile à Django, suivez ces étapes :

  1. Configurez votre serveur pour prendre en charge X-Sendfile.
  2. Dans votre vue Django, utilisez le code suivant pour servir le fichier :
from django.utils.encoding import smart_str
from django.http import HttpResponse

response = HttpResponse(mimetype='application/force-download') # mimetype is replaced by content_type for django 1.7
response['Content-Disposition'] = 'attachment; filename=%s' % smart_str(file_name)
response['X-Sendfile'] = smart_str(path_to_file)
# Set 'Content-Length' header if necessary
return response
Copier après la connexion

Ce code exploite X-Sendfile pour déléguer la diffusion de fichiers au serveur, en veillant à ce que les chemins d'accès aux fichiers restent masqués tout en permettant aux utilisateurs autorisés de télécharger des fichiers.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal