Maison > développement back-end > Tutoriel Python > Comment servir des fichiers téléchargeables avec des chemins cachés dans Django ?

Comment servir des fichiers téléchargeables avec des chemins cachés dans Django ?

DDD
Libérer: 2024-11-28 11:19:12
original
194 Les gens l'ont consulté

How to Serve Downloadable Files with Hidden Paths in 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
Copier après la connexion

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal