Maison >développement back-end >Tutoriel Python >Comment servir des fichiers téléchargeables avec des chemins cachés dans Django ?
Téléchargement dynamique de fichiers avec Django
Dans les applications Web, il est souvent nécessaire de permettre aux utilisateurs de télécharger des fichiers. Cependant, vous souhaiterez peut-être masquer les chemins d’accès aux fichiers pour empêcher l’accès direct. Avec Django, vous pouvez servir des fichiers téléchargeables avec des chemins cachés.
La question :
Un utilisateur souhaite créer une URL comme http://example.com/download /?f=somefile.txt qui, une fois accessible, sert un fichier situé dans /home/user/files/somefile.txt sans l'afficher dans le navigateur.
La réponse :
Pour y parvenir, vous pouvez utiliser une combinaison de la classe HttpResponse et du module xsendfile. HttpResponse génère le chemin d'accès au fichier ou au fichier lui-même, tandis que xsendfile gère le traitement réel du fichier.
Voici un exemple d'extrait de code qui illustre l'intégration :
from django.utils.encoding import smart_str from django.http import HttpResponse response = HttpResponse(content_type='application/force-download') response['Content-Disposition'] = 'attachment; filename=%s' % smart_str(file_name) response['X-Sendfile'] = smart_str(path_to_file) return response
Cette solution vous oblige à avoir le contrôle de votre serveur ou assurez-vous que mod_xsendfile (pour Apache) ou X-Accel-Redirect (pour nginx) est défini up.
Mise à jour pour Django 1.7 :
L'attribut mimetype dans le code doit être remplacé par content_type.
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!