0

我在一个目录中有 2 个不同的目录。第一个是views包含所有 swig 视图,例如newpost.html. 另一个是temp_images包含butterfly.png.

newpost.html我心中,

<div id="image">{{post.image}}</div> <!-- this prints `butterfly.png`-->
<img src="../temp_images/{{post.image}}"></img> <!-- shows broken img link-->

Swig 打印文本,但不会显示蝴蝶。我不知道为什么,我仔细检查了 HTML。我也试过

<img src="../temp_images/butterfly.png"></img>

这也不起作用。我使用 Swig 的方式会有问题吗?我也在使用 Node、Express、Mongo。

4

1 回答 1

1

如果您使用的是 express,那么您可能应该将您的/temp_images目录放在其中public或您设置的任何内容中以提供静态文件。例如,在您的 app.js 中,您应该在某处有这样的一行:

app.use(express.static(path.join(__dirname, 'public'), { maxAge: 60*60*1000 }));

您可以在 ConnectJS 站点上找到更多信息.static,因为 Express 是从 Connect 获取的。Connect.static 文档maxAge为浏览器提供一个缓存指令,在这种情况下,文件可以保存一个小时。

您的views目录通常只能通过您的模板引擎访问,并且不会(不应该)直接公开用于静态下载。

另请注意,图像的 URL 是相对于在浏览器上显示的 URL 进行解释的,而不是相对于在服务器上呈现的文件(尽管它们可能是完全并行的结构)。我只是提到它 - 您可以查看浏览器开发人员工具的网络部分,以查看它为图像发出的确切 GET 请求。

于 2014-03-02T01:47:00.470 回答