Dateien aus send_from_directory () konnten in flask nicht abgerufen werden

8

Ich habe eine HTML-Datei, die auf ein solches Objekt verweist

%Vor%

Daher versucht der Browser, dies per aufzurufen, und flash kann dies nicht tun

%Vor%

Es gibt viele solcher Referenzen über mehrere Dateien, daher ist es nicht möglich, die Referenzen zu ändern. Wie serviere ich diese statischen Dateien von FLASK

Ich habe alle diese statischen Dateien in den 'statischen' Ordner kopiert und dies versucht

%Vor%

Wie auch immer, funktioniert das nicht? Gibt es einen anderen Weg dies zu tun? oder was mache ich falsch?

    
Rijul Jain 16.07.2013, 16:13
quelle

4 Antworten

14

In der Produktion möchten Sie keine statischen Dateien mit dem flask-Server bereitstellen. Ich schlage vor, Sie verwenden einen richtigen Webserver, um das zu tun.

Wenn Sie für dev url_for nicht verwenden möchten, können Sie versuchen, Ihre flask-App wie folgt zu initialisieren. Auf diese Weise weiß flask, wo sich Ihre statischen Dateien befinden.

%Vor%

Sehen Sie diesen Beitrag mit vielen Informationen Statische Dateien in Flask - robot.txt, sitemap.xml (mod_wsgi)

    
codegeek 16.07.2013 16:19
quelle
2

Wenn Sie sich die Dokumente für send_from_directory ansehen, werden Sie sehen, dass es die Pfad zu dem Verzeichnis, in dem die Dateien gespeichert sind auf Datenträger . Sofern Sie Ihre Bilddateien nicht in einem Verzeichnis auf der Stammebene mit dem Namen static gespeichert haben, sollten Sie den Dateipfad aktualisieren:

%Vor%

Wenn Sie dies für alles verwenden, was unter Last steht, sollten Sie besser sicherstellen, dass Ihr Webserver die Dateien bereitstellt, anstatt statische Dateien von Ihrer Anwendung zu liefern.

    
Sean Vieira 16.07.2013 16:51
quelle
2

Verwenden Sie den integrierten Flask-Server nicht in der Produktion. Es ist nur für die Entwicklung! Und verwenden Sie Flask nicht, um statische Assets zu servieren. Es ist langsam! In der Produktion benutzen Sie einen Webserver vor Flask wie Apache2, Nginx oder Lighttpd. Diese Server können eine URL neu schreiben und statische Ressourcen bereitstellen.

So stellen Sie den Flask bereit: Ссылка

Wie man eine URL umschreibt: apache2 , nginx , lighttpd .

    
dAnjou 16.07.2013 19:14
quelle
1

Ich denke, ein besserer Weg wäre:

%Vor%

Anstatt die Dateien an zwei verschiedenen Orten zu senden, würde dies eine permanente Weiterleitung an die richtige URL vornehmen. Wie andere gesagt haben, ist es auch eine gute Idee, statische Dateien direkt mit nginx oder Apache zu versorgen.

    
Markus Unterwaditzer 17.07.2013 14:15
quelle

Tags und Links