2014-03-02 35 views
0

我在一個目錄內有2個不同的目錄。第一個是views,其中包含所有swig視圖,如newpost.html。另一種是temp_images其中包含butterfly.png用swig模板引擎瀏覽html目錄?

newpost.html我有,

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

痛飲打印文本,但它不會顯示蝴蝶。我不知道爲什麼,我加倍檢查了HTML。我也試過

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

而且這也沒有工作。我可以在使用Swig時遇到問題嗎?我也在使用Node,Express,Mongo。

回答

1

如果使用的是快遞,那麼你應該有你的/temp_images目錄public或任何你已經設置了爲靜態文件內。例如,在你的app.js,你應該有一個這樣的地方行:

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

您可以找到ConnectJS網站的更多信息有關.static,因爲快速得到這個從連接。 Connect.static docmaxAge向瀏覽器提供緩存指令,在這種情況下該文件適用於一個小時。

您的views目錄通常只能通過您的模板引擎進行訪問,並且不會(不應該)直接暴露給靜態下載。

另請注意,圖像的URL是相對於在瀏覽器中顯示的URL而解釋的,而不是相對於在服務器上呈現的文件(雖然它們可能是完美的並行結構)。我只是提到它 - 您可以查看瀏覽器開發人員工具的網絡部分,以查看它爲圖像製作的確切GET請求。

+0

課程!!!謝謝你!這是通常的工作方式嗎?如果我希望客戶端能夠上傳圖片,我將它們保存到「temp_images」目錄中,然後使用鏈接? (我知道這是一個廣泛的後續)還有什麼'{maxAge:60 * 60 * 1000}'? – Squirrl

+1

我不確定'這是一般的工作方式嗎?但是,是的,你可以讓文件上傳(你可能需要像[強大](https://github.com/felixge/node-formidable)解析文件上傳。),如果你的文件的目的地是在你的公共結構中的某個地方,你可以像任何其他圖像一樣鏈接到它們。您是否也可以使用不同的目錄和公共符號鏈接等。請參閱maxAge的答案更新。 –