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>

  • Flasche Gunicorn App kann nicht __name__ zu gleich '__main__'
  • Bereitstellen von Django mit Gunicorn Kein Modul namens ImportError: Kein Modul namens Validierung
  • Purning Nginx's http_userid_module Cookie in Python
  • Kann ich das uwsgi-Protokoll verwenden, um http anzurufen?
  • Tornado-Python: Tornado-Server-Integration mit NGINX
  • UWSGI + NGINX 502 Bad Gateway
  • 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?

  • Plane passend in einer 3D-Punktwolke
  • Wie man Paches aus dem 3D-Bild in Python extrahiert?
  • Re-initialisieren von Variablen in Tensorflow
  • Caffe Netzwerk immer sehr geringem Verlust, aber sehr schlechte Genauigkeit beim Testen
  • OpenCV 2.4.1 - Berechnen von SURF-Deskriptoren in Python
  • Wie wähle ich zwischen Tesseract und OpenCV?
  • 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.