Heim >Backend-Entwicklung >Python-Tutorial >Wie stellt man herunterladbare Dateien mit versteckten Pfaden in Django bereit?

Wie stellt man herunterladbare Dateien mit versteckten Pfaden in Django bereit?

DDD
DDDOriginal
2024-11-28 11:19:12183Durchsuche

How to Serve Downloadable Files with Hidden Paths in Django?

Dynamischer Datei-Download mit Django

In Webanwendungen ist es oft notwendig, Benutzern das Herunterladen von Dateien zu ermöglichen. Möglicherweise möchten Sie jedoch die Dateipfade unkenntlich machen, um den direkten Zugriff zu verhindern. Mit Django können Sie herunterladbare Dateien mit versteckten Pfaden bereitstellen.

Die Frage:

Ein Benutzer möchte eine URL wie http://example.com/download erstellen /?f=somefile.txt, das bei Zugriff eine Datei bereitstellt, die sich unter /home/user/files/somefile.txt befindet, ohne sie im anzuzeigen Browser.

Die Antwort:

Um dies zu erreichen, können Sie eine Kombination aus der HttpResponse-Klasse und dem xsendfile-Modul verwenden. HttpResponse generiert den Pfad zur Datei oder zur Datei selbst, während xsendfile die eigentliche Dateibereitstellung übernimmt.

Hier ist ein Beispielcode-Snippet, das die Integration demonstriert:

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

Diese Lösung erfordert Folgendes Haben Sie die Kontrolle über Ihren Server oder stellen Sie sicher, dass mod_xsendfile (für Apache) oder X-Accel-Redirect (für Nginx) eingestellt ist up.

Update für Django 1.7:

Das Mimetype-Attribut im Code sollte durch content_type ersetzt werden.

Das obige ist der detaillierte Inhalt vonWie stellt man herunterladbare Dateien mit versteckten Pfaden in Django bereit?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn