2015-05-07 107 views
1

我嘗試使用express框架提供.png服務,但不斷收到「Can not/get」錯誤。使用Express框架爲服務器圖像提供服務

var express = require('express'), 
    mongoose = require('mongoose'), 
    fs = require('fs'), 
    Schema = mongoose.Schema; 
    app = express(), 
    port = process.env.PORT || 3000; 

app.use('/public/media', express.static(__dirname + '/public/media/img0.png')); 
app.listen(port); 

console.log(__dirname + '/public/media/img0.png'); 

我打印出我的文件的目錄名,以確保我有正確的路徑。深入研究develepor工具卻顯示由於404錯誤導致無法加載資源。

我的文件結構是這樣的。

-- admin 
    -- app.js public 
     -- media 
     -- img0.png img1.png 

從我所看到的,我的靜態文件服務器應該工作,所以我有點損失。思考?

+0

你訪問什麼URL? http:// localhost:3000/public/media或http:// localhost:3000/public/media/img0.png或其他內容? – Trott

回答

2

注意這一行:

app.use('/public/media', express.static(__dirname + '/public/media/img0.png')); 

,指出如果瀏覽器請求/public/media,那麼請起到了PNG文件。所以這將工作。

如果瀏覽器請求/public/media/img0.png,那麼這將是一個404

這很可能是你的意思是這個:

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

這將成爲一個404 /public/media但將擔任任何圖像您在該目錄中指定相應的圖像文件是否存在。所以如果瀏覽器要求/public/media/img0.png,它會得到它。

+0

這將做到這一點。感謝您的解釋! – cg14

0

你可以嘗試申請static整個目錄:

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

我對你的意思有點困惑。你是說向我現有的代碼添加這個額外的聲明?如果是這樣,像我這樣將它應用到資源之間有什麼區別,以及你在說什麼? – cg14

+0

你配置它的方式,你必須路由'/ public/media/img01.png'而不是'/ public/media'。你已經將一個目錄映射到一個文件,所以它不一致。 – tadman