gpt4 book ai didi

python - Tornado 如何在任意位置提供单个静态文件?

转载 作者:太空狗 更新时间:2023-10-29 19:34:11 24 4
gpt4 key购买 nike

我正在使用 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:未找到文件。

测试显示 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 .没有什么是我的用例。

最佳答案

StaticFileHandler 需要两个参数,因此如果您希望将单个 url (/foo.json) 映射到您的文件路径,您可以使用:

app = tornado.web.Application([
(r'/foo.json()', tornado.web.StaticFileHandler, {'path': '/path/to/foo.json'})
])

正则表达式将匹配 /foo.json 并发送空捕获组 (),这将导致文件路径按原样使用。当捕获组不为空时,/path/to/foo.json会被当作一个目录/path/to/foo.json/,handler会尝试将捕获组中的任何内容与该目录中的文件名相匹配。

关于python - Tornado 如何在任意位置提供单个静态文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21248222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com