2012-09-03 106 views
2

我試圖上傳一個圖像,並在快遞中顯示。 我配置我的應用程序在「公共/圖片」快速圖像上傳和玉視圖

app.use(express.bodyParser({ keepExtensions: true, uploadDir: './public/images' })); 

上傳那張偉大的,但我無法找到如何顯示在我的玉模板上傳的圖片上傳。圖像路徑我從req.files獲取對象是一樣的東西「公共/圖片/ imagename.jpg」但我可以看到圖片的唯一途徑就是在這樣的網址:

http://localhost:3000/images/imagename.jpg 

有沒有一種辦法也許從req.files中刪除'public'參數,或者是否有其他解決方案? 謝謝大家!

編輯:

好的,謝謝你。但我的問題是關於在玉模板中顯示圖像。我添加了這一行:

app.use('/public/images/', express.static(__dirname + '/public/images/')); 

現在我可以訪問該目錄中的文件。但我無法在我的玉模板中顯示它們。當我嘗試這(與foto_path === req.files.image.path):

img(src= #{material.foto_path}) 

我得到這個網址:

http://localhost:3000/undefinedpublic/images/b1ce29f40ac7692ac62637e42f0f9128.jpgundefined 

- 什麼是 '未定義' 的呢?

謝謝!

回答

1

您需要知道Express配置您的公共目錄與Apache等其他傳統服務器有點不同。我想爲顯示靜態資產,您的行看起來像這樣:

app.use(express.static(__dirname + '/public')); 

這將是您的應用程序中唯一可公開查看的文件夾。這就是爲什麼Express發現多餘的目錄名稱添加到網址。 該網址並未反映您的實際文件夾結構。

但是,req.files確實顯示了實際路徑,因此您可以在應用程序中操作它,否則它將在其他地方無法使用。我的解決方案是直接參考Jade中的src = '/images/imageName.jpg'。你必須傳遞實際的圖像名稱作爲參數。或者,你可以從req中刪除「公開」部分並傳遞它。

+0

好的,謝謝你。但我的問題是關於在玉模板中顯示圖像。見上面的編輯。 –

+0

好吧,req.files必須顯示「公開」部分,否則它將在您的應用程序的其他地方無法使用。你可以直接在Jade中直接引用實際的URL:'src ='/ images/imagename.jpg''。我會將其添加到答案中。 – chenglou

+0

問題是文件名稱來自上載表單。我需要從中找到正確的道路。 –