Servieren Sie pdf als Download mit Pyramid, Ningx, X-Accel-Redirect Header

Ich möchte, dass ein Benutzer in der Lage ist, auf einen Link wie folgt zu klicken:

<a href="/download?file=123">download</a>

  • Uwsgi Fehler python Anwendung nicht gefunden
  • Nginx, Django, Gunicorn, Ubuntu 14.04 (13: Permission verweigert) beim Verbinden mit Upstream
  • Django-Subdomain-Konfiguration für API-Endpunkte
  • Nginx django uwsgi Seite nicht gefunden Fehler
  • Fügen Sie Header in einer Flask App mit unicode_literals hinzu
  • Nginx-Konfiguration für statische Sites im Root-Verzeichnis, Flask-Apps in Unterverzeichnissen
  • Habe eine Pyramide 1.2.7 App die Ansicht so

     @view_config(route_name='download') def download(request): file_id = request.GET['file'] filename = get_filename(file_id) headers = request.response.headers headers['Content-Description'] = 'File Transfer' headers['Content-Type'] = 'application/force-download' headers['Accept-Ranges'] = 'bytes' headers['X-Accel-Redirect'] = ("/path/" + filename + ".pdf") return request.response 

    Und meine nginx Konfiguration sieht so aus

     location /path/ { internal; root /opt/tmp; } 

    Das alles funktioniert aber anstatt des Browsers mit einem pdf-Download, der Browser zeigt eine Reihe von PDF-Müll.

    Wie richte ich meine Pyramidenansicht ein, um den Browser dazu zu bringen, das Richtige zu tun?

  • OpenCV python's API: FlannBasedMatcher
  • Was sind die richtigen Gebrauchs- / Parameterwerte für HoughCircles in OpenCV für Iris-Erkennung?
  • Gefüllte Kreiserkennung mit CV2 in Python?
  • Berechnen Sie die Kamera-Weltposition mit OpenCV Python
  • Wie man Bilder in Echtzeit verarbeitet und ein Echtzeit-Video des Ergebnisses ausgibt?
  • Wie zu beheben "ValueError: muss mindestens ein Array zu verketten" Fehler
  • One Solution collect form web for “Servieren Sie pdf als Download mit Pyramid, Ningx, X-Accel-Redirect Header”

    Wenn Sie darauf hinweisen möchten, dass ein Webbrowser eine Ressource herunterladen sollte, anstatt sie anzuzeigen, verwenden Sie den Content-Disposition Header, wie in RFC 6266 beschrieben . Zum Beispiel wird der folgende Antwort-Header dem Browser mitteilen, um die Datei herunterzuladen:

     Content-Disposition: attachment 

    Sie können auch einen Dateinamen für die heruntergeladene Datei über diesen Header angeben (falls er sich von der letzten Pfadkomponente in der URL unterscheidet):

     Content-Disposition: attachment; filename=foo.pdf 

    Wenn man die Nginx-Dokumentation betrachtet , sollte diese Antwort-Header korrekt in Verbindung mit der X-Accel-Redirect Funktion funktionieren, die Sie verwenden.

    Python ist die beste Programmiersprache der Welt.