给定一个默认的 Yesod 脚手架,通过将上传的文件移动到static
目录中来实现文件上传,我如何链接到静态目录中的文件?对于普通的静态文件,staticFiles
拼接会生成一个我可以引用的标识符,但对于用户上传的文件,显然我不能对这些标识符进行硬编码。我可以通过手动使用#{}
拼接来做到这一点,但我希望可能会有一些更安全的东西,即使唯一可检查的组件是我static/
正确使用了前缀。
问问题
501 次
1 回答
8
staticFiles
生成一堆类型为Route Static
. 不幸的是,Haddock 不显示相关类型族的信息,因此您在文档中看不到构造函数,但唯一可用的构造函数是StaticRoute
:
https://github.com/yesodweb/yesod/blob/master/yesod-static/Yesod/Static.hs#L142
这两个字段是路径信息和查询字符串参数。因此,要创建指向 的链接/static/foo/bar?baz=bin
,您可以使用:
StaticRoute ["foo", "bar"] [("baz", "bin")]
通常不需要创建查询字符串参数,但staticFiles
会使用它来插入哈希值以实现缓存清除目的。
于 2012-10-28T04:41:42.030 回答