Seite 1 von 1

tornado static file handler

Verfasst: Mittwoch 15. Januar 2020, 13:17
von tschaka81
Hallo an alles,

ich versuche gerade mit Tornado einen StaticFileHandler zu erstellen

dazu habe ich einen Code a la

Code: Alles auswählen

("/foo/bar/test.js", StaticFileHandler, {"path": "/path/to/testjs"})
genutzt. Wenn ich meinen Server starte erwarte ich in /foo/bar eine Datei mit test.js. Allerdings bekomme ich ein 404 zurück. Es wurde also keine Datei gefunden. Muss die Datei zwingend im Verzeichnis foo/bar liegen?

Was mache ich falsch?

Schöne Grüße

Markus

Re: tornado static file handler

Verfasst: Mittwoch 15. Januar 2020, 13:24
von Sirius3
StaticFileHandle ist dazu gedacht, ganze Verzeichnisbäume unterhalb von `path` bereitzustellen.
Aus der Dokumentation:
Note that a capture group in the regex is required to parse the value for the path argument to the get() method (different than the constructor argument above); see URLSpec for details.
Also:

Code: Alles auswählen

("/foo/bar/(test\.js)", StaticFileHandler, {"path": "/path/to/testjs"})
würde nur eine Datei `/path/to/testjs/test.js` unter der URL http://xxx/foo/bar/test.js bereitstellen.

Re: tornado static file handler

Verfasst: Mittwoch 15. Januar 2020, 13:31
von tschaka81
Sirius3 hat geschrieben: Mittwoch 15. Januar 2020, 13:24 StaticFileHandle ist dazu gedacht, ganze Verzeichnisbäume unterhalb von `path` bereitzustellen.
Aus der Dokumentation:
Note that a capture group in the regex is required to parse the value for the path argument to the get() method (different than the constructor argument above); see URLSpec for details.
Also:

Code: Alles auswählen

("/foo/bar/(test\.js)", StaticFileHandler, {"path": "/path/to/testjs"})
würde nur eine Datei `/path/to/testjs/test.js` unter der URL http://xxx/foo/bar/test.js bereitstellen.
Hi Sirius,

leider funktioniert das auch nicht bei mir, Immer noch 404.

Re: tornado static file handler

Verfasst: Mittwoch 15. Januar 2020, 13:50
von Sirius3
Dann zeig doch mal mehr, Code, Logausgabe, etc.

Re: tornado static file handler

Verfasst: Mittwoch 15. Januar 2020, 14:02
von tschaka81
Hi,

ich habe gerade das Problem entdeckt:
ich hatte vorher einen StaticFileHandler schon einmal definiert. Da hatte ich ein (.*) auf das gleiche Webverzeichnis angewandt.

also

Code: Alles auswählen

("/foo/bar/(.*)", StaticFileHandler, {"path": "/anotherpath/to/somewhere"})
("/foo/bar/js/(test\.js)", StaticFileHandler, {"path": "/path/to/testjs"})
Scheinbar kann man dann nicht mehr einzelne Dateien nachschieben. Also hier in /foo/bar. Das ist dann blockiert. Das ist schade. Ich habe jetzt die Adresse zu einem separaten Unterverzeichnis geschoben (/foo/bar2) und es ging.

Gibt es hier eine eleganter Lösung?

Re: tornado static file handler

Verfasst: Mittwoch 15. Januar 2020, 14:09
von __blackjack__
@tschaka81: Das in eine sinnvolle Reihenfolge bringen‽ Ich meine es ist doch klar das das so herum nicht funktionieren konnte. "/foo/bar/(.*)" trifft halt auch auf "/foo/bar/test.js" zu.

Re: tornado static file handler

Verfasst: Donnerstag 16. Januar 2020, 08:21
von tschaka81
__blackjack__ hat geschrieben: Mittwoch 15. Januar 2020, 14:09 @tschaka81: Das in eine sinnvolle Reihenfolge bringen‽ Ich meine es ist doch klar das das so herum nicht funktionieren konnte. "/foo/bar/(.*)" trifft halt auch auf "/foo/bar/test.js" zu.
Im Nachhinein gesehen, kann ich dem nur zustimmen. :geek: