【发布时间】:2014-02-10 11:05:40
【问题描述】:
我正在使用 Tornado 开发一个简单的网络应用程序。它提供一些动态文件和一些静态文件。动态文件不是问题,但我无法提供静态文件。我要做的是在访问 /foo.json URL 时提供文件 /path/to/foo.json。
请注意,/path/to/foo.json 位于文档根目录之外。在 Apache 中,我只需设置一个别名。有了 Tornado,我有:
app = tornado.web.Application([
(r'/dynamic\.html', MyService, dict(param = 12345)),
(r'/(foo\.json)', tornado.web.StaticFileHandler, {'path': '/path/to/foo.json'})
])
我添加了正则表达式组运算符() 以满足 Tornado,否则会引发异常。但是现在,当我访问 /foo.json 时,我得到一个 404: File Not Found。
测试表明 Tornado 正在尝试使用提供的路径作为它附加 foo.json 的根目录,这意味着如果我的文件位于 /path/to/foo.json/foo.json,则可以找到它。接近,但不完全。
我想我可以将我的路径缩短为简单的“/path/to”,这将触发对 /foo.json URL 的 /path/to/foo.json 的获取,但这迫使我使用相同的名称在文件系统上的 URL 中。我怎样才能做一个简单的、任意的、URL 到文件的映射?
我对此进行了一些研究,阅读了tornado.web.Application 和tornado.web.StaticFilehandler 的文档,以及一些other SO questions。没有什么是我的用例。
【问题讨论】:
-
所以通过任意文件映射,您想要的是将 URL
yourdomain.com/path/to/foo.json映射到yourfilesystem/path/to/bar.json?我认为你应该在你的问题中包含它(即,在示例中使用不同的名称,而不是在 URL 和文件系统中使用foo.json) -
我在倒数第二段中提到了这一点,@justhalf,但也许它可以更清楚。
-
是的,我的意思是在您的示例中包含您在倒数第二段中提到的内容。因为您的示例并不能真正代表您的真正问题。
标签: python tornado static-files