[Django] Download von Dateien

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Hallo,

in der Ausgabe einer Suchfunktion wird der Dateipfad zur angegebenen Datei ausgegeben. Wie kann ich am einfachsten einen Dateidownload realisieren? Die Funktion django.views.static.serve() wird in der Doku als
Using this method is inefficient and insecure
bezeichnet. Außerdem möchte ich die .mp3-Dateien downloaden und nicht abspielen. Das Ganze soll mit dem "normalen" Downloaddialog realisiert werden. Jetzt muss ich das über die rechte Maustaste > Link speichern machen, da sonst die Datei direkt abgespielt wird.

Grüße
Mawilo

[Edit] Das die Datei direkt abgespielt wird, liegt am MPlayer-Plugin des Firefox. Auf anderen Systemen habe ich den Downloaddialog sofort bekommen. Aber gibt es noch etwas anderes als django.views.static.serve()?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mawilo hat geschrieben:Wie kann ich am einfachsten einen Dateidownload realisieren?
Über den HTTPd den du so nutzt. Also Apache oder Lighttpd oder nginx oder Cheerokee oder was du eben so nutzt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Browser sollten sich an den übertragenen Content-Type halten.

Wenn du deine Dateien als "application/octet-stream" klassifizierst und nicht als "audio/mpeg", müsste eigentlich immer das Speichern angeboten werden. Andererseits: Sollte das nicht besser der User entscheiden dürfen?

Vielleicht wirfst du auch mal einen Blick auf RFC 2138 (Stichwort: Content-Disposition-Header).

Für einen effizienten Download weist ich auf das Stichwort "X-Sendfile" hin.

Brauchst du keine Session oder Login oder ähnliches, kannst du die Dateien natürlich auch direkt von einem der Django-Application vorgeschalteten Webserver (Apache, Lighttpd, Nginx) ausliefern lassen.

Stefan
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Danke für die Hinweise und Stichpunkte. Da habe ich einen Faden, den ich aufnehmen kann.

Grüße Mawilo
Antworten