Seite 1 von 1

[Django] Download von Dateien

Verfasst: Sonntag 22. Februar 2009, 22:57
von Mawilo
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()?

Re: [Django] Download von Dateien

Verfasst: Montag 23. Februar 2009, 01:25
von Leonidas
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.

Verfasst: Montag 23. Februar 2009, 22:18
von sma
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

Verfasst: Montag 23. Februar 2009, 22:24
von Mawilo
Danke für die Hinweise und Stichpunkte. Da habe ich einen Faden, den ich aufnehmen kann.

Grüße Mawilo