Comment extraire des images à partir de node.js serveur du dossier dans l'URL?

Quelqu'un sait comment faire pour récupérer des images à partir de node.js serveur du dossier dans l'URL?
Dans ma structure de dossier que j'ai données du dossier et à l'intérieur il y a un sous-dossier img de l'image. Je veux accéder à cette image avec l'URL, comme ceci:

http://localhost:3000/data/img/default.jpg

mais quand je rentre dans le navigateur j'ai toujours cette erreur:

Page Non Trouvée /data/img/default.jpg n'est pas un chemin d'accès valide.

server.js:

'use strict';
/**
 * Module dependencies.
 */
var init = require('./config/init')(),
    config = require('./config/config'),
    mongoose = require('mongoose');
var express = require('express');

/**
 * Main application entry file.
 * Please note that the order of loading is important.
 */

//Bootstrap db connection
var db = mongoose.connect(config.db, function(err) {
    if (err) {
        console.error('\x1b[31m', 'Could not connect to MongoDB!');
        console.log(err);
    }
});

//Init the express application
var app = require('./config/express')(db);

//Bootstrap passport config
require('./config/passport')();

app.use(express.static('data/img'));
//Start the app by listening on <port>
app.listen(config.port);

//Expose app
exports = module.exports = app;

//Logging initialization
console.log('MEAN.JS application started on port ' + config.port);

express.js:

'use strict';
/**
* Module dependencies.
*/
var express = require('express'),
morgan = require('morgan'),
bodyParser = require('body-parser'),
session = require('express-session'),
compress = require('compression'),
methodOverride = require('method-override'),
cookieParser = require('cookie-parser'),
helmet = require('helmet'),
passport = require('passport'),
mongoStore = require('connect-mongo')({
session: session
}),
flash = require('connect-flash'),
config = require('./config'),
consolidate = require('consolidate'),
path = require('path');
module.exports = function(db) {
//Initialize express app
var app = express();
//Globbing model files
config.getGlobbedFiles('./app/models/**/*.js').forEach(function(modelPath) {
require(path.resolve(modelPath));
});
//Setting application local variables
app.locals.title = config.app.title;
app.locals.description = config.app.description;
app.locals.keywords = config.app.keywords;
app.locals.facebookAppId = config.facebook.clientID;
app.locals.jsFiles = config.getJavaScriptAssets();
app.locals.cssFiles = config.getCSSAssets();
//Passing the request url to environment locals
app.use(function(req, res, next) {
res.locals.url = req.protocol + '://' + req.headers.host + req.url;
next();
});
//Should be placed before express.static
app.use(compress({
filter: function(req, res) {
return (/json|text|javascript|css/).test(res.getHeader('Content-Type'));
},
level: 9
}));
//Showing stack errors
app.set('showStackError', true);
//Set swig as the template engine
app.engine('server.view.html', consolidate[config.templateEngine]);
//Set views path and view engine
app.set('view engine', 'server.view.html');
app.set('views', './app/views');
//Environment dependent middleware
if (process.env.NODE_ENV === 'development') {
//Enable logger (morgan)
app.use(morgan('dev'));
//Disable views cache
app.set('view cache', false);
} else if (process.env.NODE_ENV === 'production') {
app.locals.cache = 'memory';
}
//Request body parsing middleware should be above methodOverride
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(bodyParser.json());
app.use(methodOverride());
//Enable jsonp
app.enable('jsonp callback');
//CookieParser should be above session
app.use(cookieParser());
//Express MongoDB session storage
app.use(session({
saveUninitialized: true,
resave: true,
secret: config.sessionSecret,
store: new mongoStore({
db: db.connection.db,
collection: config.sessionCollection
})
}));
//use passport session
app.use(passport.initialize());
app.use(passport.session());
//connect flash for flash messages
app.use(flash());
//Use helmet to secure Express headers
app.use(helmet.xframe());
app.use(helmet.xssFilter());
app.use(helmet.nosniff());
app.use(helmet.ienoopen());
app.disable('x-powered-by');
//Setting the app router and static folder
app.use(express.static(path.resolve('./public')));
//Globbing routing files
config.getGlobbedFiles('./app/routes/**/*.js').forEach(function(routePath) {
require(path.resolve(routePath))(app);
});
//Assume 'not found' in the error msgs is a 404. this is somewhat silly, but valid, you can do whatever you like, set properties, use instanceof etc.
app.use(function(err, req, res, next) {
//If the error object doesn't exists
if (!err) return next();
//Log it
console.error(err.stack);
//Error page
res.status(500).render('500', {
error: err.stack
});
});
//Assume 404 since no middleware responded
app.use(function(req, res) {
res.status(404).render('404', {
url: req.originalUrl,
error: 'Not Found'
});
});
return app;
};
merci de poster votre code serveur. Il ya quelques façons de le faire. rappelez-vous, le noeud n'est pas apache. Tout ce que vous voulez faire, vous devez l'activer. Vous êtes probablement manque juste la config pour accéder aux fichiers.
en fait il a été généré par YO signifie générateur. J'ai trouvé quelques solutions comme ceci:var express = require('express'); var app = express.createServer(); app.utilisation(express.statique(__dirname + '/public")); app.listen(8080); mais je suis très nouveau à node.js et ne savent pas comment l'appliquer dans mon application et de toute aide est très appriciated
express.statique est exactement ce que j'allais dire. Vous pouvez placer qu'avec votre application existante.usage() consolidés. J'ai toujours mis ce truc dans app.configure(); mais je ne pense pas que c'est nécessaire.
ok, donc quand j'ai l'image dans le répertoire data/img(dossier de données est dans le même dir comme server.js) la commande ressemblera à ceci: app.utilisation ("/static', express.statique (données/img'));? parce que quand j'ai mis cette commande dans server.js et de mettre cette adresse dans le navigateur localhost:3000/static/default.jpg j'ai eu le même message d'erreur

OriginalL'auteur mark | 2014-11-20