[Django] Download von Dateien

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

[Django] Download von Dateien

Beitragvon Mawilo » Sonntag 22. Februar 2009, 22:57

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()?
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: [Django] Download von Dateien

Beitragvon Leonidas » Montag 23. Februar 2009, 01:25

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 Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Beitragvon sma » Montag 23. Februar 2009, 22:18

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: 446
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Beitragvon Mawilo » Montag 23. Februar 2009, 22:24

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

Grüße Mawilo

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder