2013-03-09 79 views
1

我在/公用文件夹图像和我想要展示them..simply这样的:<img src="a.jpg">express.js如何显示图像?

我app.js代码

var express = require('express') 
    , app = express() 
    , http = require('http') 
    , server = http.createServer(app) 
    , io = require('socket.io').listen(server); 

server.listen(8080);  
app.use('/public', express.static(__dirname + "/public")); 

如果我在本地主机打开它这个错误仍然显示

NetworkError: 404 Not Found - http://localhost:8080/public/a.jpg" 
+0

我测试了你的代码,它工作正常。 – fardjad 2013-03-09 10:51:42

+0

嗯真的吗?那么为什么它不在我的本地主机上工作? – dontHaveName 2013-03-09 10:52:50

+0

您确定您的快递应用程序指向正确的公用文件夹吗? – fardjad 2013-03-09 10:54:08

回答

0

您需要将URL中的/ public/bit放到图像中。
所以就变成只是http://localhost:8080/a.jpg

+0

我不同意! 'app.use('/ public',express.static(__ dirname +“/ public”));'应该用'/ public'路径名前缀来提供文件。 – fardjad 2013-03-09 10:36:56

+0

ü现在我不明白我在做什么坏 – dontHaveName 2013-03-09 10:37:32

+0

@fardjad我不同意你的分歧! http://expressjs.com/faq.html - 对“GET /javascripts/jquery.js”的请求将首先检查“./public/javascripts/jquery.js” – Alex 2013-03-09 11:04:09

0

处理静态文件快递 你只需要在那里你把你的静态资产,到express.static中间件开始直接服务于文件传递目录的名称。 例如,如果你把你的资产产生一种叫做公共文件夹中,你可以使用 app.use(express.static('public'))如下,我的图片是在public\images

var express = require('express'); 
var app = express(); 
app.use(express.static('public')); 
app.get('/', function (req, res) { 
    res.send('Hello World'); 
}) 
var server = app.listen(8081, function() { 
var host = server.address().address 
var port = server.address().port 
console.log("Example app listening at http://%s:%s", host, port) 
}) 

保存上面的代码server.js

$ node server.js

现在打开http://127.0.0.1:8081/images/logo.png在任何浏览器和图像将显示