Maison >développement back-end >Tutoriel Python >Comment Django peut-il servir en toute sécurité des fichiers téléchargeables à l'aide de X-Sendfile (ou X-Accel-Redirect) ?
Servir des fichiers téléchargeables avec Django
Les utilisateurs d'un site Web ont souvent besoin de pouvoir télécharger des fichiers, mais sécuriser les fichiers et empêcher les téléchargements directs est crucial. Une solution consiste à masquer les chemins d'accès aux fichiers afin que les utilisateurs ne puissent pas y accéder directement.
Pour y parvenir, créez une URL qui inclut un paramètre, tel que :
http://example.com/download/?f=somefile.txt
Supposons que les fichiers téléchargeables résider dans le dossier /home/user/files/. Django peut être configuré pour servir les fichiers en téléchargement sans nécessiter une URL et une vue spécifiques pour afficher le fichier.
Le module X-Sendfile offre une solution optimale. Il permet à Django de localiser le fichier et de spécifier ses en-têtes, tandis que le service du fichier lui-même est géré par le serveur Web (par exemple, Apache, Lighttpd). Après avoir installé et configuré mod_xsendfile, intégrez-le à votre vue :
from django.utils.encoding import smart_str 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
Notez que cette approche nécessite un contrôle du serveur ou une société d'hébergement prenant en charge mod_xsendfile.
Considérations supplémentaires :
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!