Articles of express

如何使用NodeJS下载pdf并发送给客户端?

我正尝试使用NodeJS下载PDF文件,然后将其数据发送到客户端以embedded到页面中。 下面是我如何下载PDF文件: exports.sendPdf = function(req, responce) { var donneRecu = req.body; var url = 'http://www.ieee.org/documents/ieeecopyrightform.pdf'//pdf link http.get(url, function(res) { var data = ''; res.on('data', function(chunk) { console.log('downloading'); data += chunk; }); res.on("end", function() { console.log('downloaded'); responce.header("Access-Control-Allow-Origin", "*"); responce.header("Access-Control-Allow-Headers", "X-Requested-With"); responce.header(200, {'content-type' : 'application/pdf'}); responce.send(data); }); }).on("error", function() { callback(null); }); } 如何将从NodeJS收到的数据发送到客户端? 编辑我发现解决scheme: exports.sendPdf = […]

使用XMLHttpRequest将多个file upload到Express.js 3.5服务器

我正在尝试在JavaScript中使用原生FileAPI构buildfile upload器,并且我想通过XMLHttpRequest(不带jQuery)将file upload到使用Express.js的Node.js服务器。 文件阅读部分工作正常,当我上传文件没有XMLHttpRequest它完美的作品(文件在Express.js req.files )。 问题是通过AJAX上传: req.files总是空的。 下面是一些代码: 表格: <form action="http://localhost:3000/upload" method="POST" enctype="multipart/form-data" name="form"> <input type="file" name="uploads" id="files" multiple="multiple"> <input type="submit" name="submit" value="submit"> </form> 前端的上传部分(在文件[0] .data中是一个文件 – 不是一个数组或东西): function uploadFiles(files) { var xhr = new XMLHttpRequest(); xhr.submittedData = files; // Array of objects with files included. But it neither works with an array of […]

Socket.io从Express控制器发出

我对Node.js / Express很新,我将它用作AngularJS应用程序的后端。 我查看了所有的StackOverflow在我的问题一些帮助,但我似乎无法弄清楚如何将build议移植到我的代码。 我的申请工作如下: 长期运行的Scala进程会定期发送我的Node.js应用程序日志消息。 它通过张贴到HTTP API来完成 收到post后,我的应用程序将日志消息写入MongoDB 日志消息然后实时发送到Angular客户端。 我有一个Node的模块的问题,因为我不知道如何引用Express控制器中的套接字实例。 正如你所看到的,在server.js中,socket.io在那里被实例化。 但是,我希望控制器本身logs.js能够使用socket.io实例发出。 我如何在控制器中引用io? 我不知道如何将io实例传递给控制器​​,以便发送消息? 这里是一些节点代码: server.js var app = express(), server = require('http').createServer(app), io = require('socket.io').listen(server); require('./lib/config/express')(app); require('./lib/routes')(app); server.listen(config.port, config.ip, function() { console.log('Express server listening on %s:%d, in %s mode', config.ip, config.port, app.get('env')); }); io.set('log level', 1); // reduce logging io.sockets.on('connection', function(socket) { console.log('socket […]

成功login后,将用户数据从Nodejs服务器推送到Angular

我尝试通过使用PassportJS通过Facebooklogin我的用户,并将用户数据传递给Angular。 在服务器端,用户控制器中的Facebookcallback代码如下: exports.facebookCallback = function() { return function(req, res, next) { passport.authenticate('facebook', function(err, user, email) { if (err || !user) { return res.redirect('/auth'); } req.login(user, function(err) { if (err) { return res.redirect('/auth'); } return res.redirect('/'); }); })(req, res, next); }; }; 从我从PassportJS文档中了解到,调用req.login应该将用户数据放入会话中。 我在服务器端的路线如下所示: app.get('/auth', usersCtrl.auth); app.get('/auth/signout', usersCtrl.logout); app.get('/auth/facebook', passport.authenticate('facebook', { scope: ['email', 'user_hometown'] })); app.get('/auth/facebook/callback', […]

如何使用nodejs / express来上传和读取文件

有各种各样的post,但我仍然没有得到它。 我想上传* .csv并阅读并处理其内容。 我的玉文件就是这个 //views/import.jade extends layout block content h1= title form(action="/import", method="post", enctype="multipart/form-data") input(type="file", name="ufile") input(type="submit", name="Upload") – 我改变了代码,但是req.files是未定义的 //routes/index.js /* import page. */ router.get('/blah', function(req, res, next) { res.render('import', { title: 'Import Data' }); }); router.post('/import', function(req, res) { console.log(req.files); }); module.exports = router;

快递:req.flash()需要会话

我有一些问题,让连接闪光灯工作,我得到的错误信息是: '错误:req.flash()需要会话' 我已经看到这可能是因为应用程序的顺序,但我不知道这是否是这种情况。 App.js: var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var session = require('express-session'); var flash = require('connect-flash'); var passport = require('passport'); var app = express(); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); app.use(session({secret: '{secret}', […]

C#和Node.js / crypto的通用encryption/解密代码示例

我正在尝试在IIS中使用应用程序请求路由(ARR)将一组path传递给Node.js网站。 我的问题是能够获取/设置身份validation票在任何一方。 我只是真的需要一个简单的encryption/解密对的例子,它将为C#和Node.js开箱即用,两者的结果相同。 我会在接下来的几天内自己处理这个问题,并打算回答,如果没有人在我面前答案。 我的意图是在Node.js端将节点端写为连接/expression模块。 我已经在ASP.Net解决scheme中进行了自定义身份validation,并且可以轻松地将我当前的方法replace为在两个平台上都可以安全的方法(只要它们共享相同的密钥)。 当前在AccountController.cs创buildvalidationCookie的代码 private void ProcessUserLogin(MyEntityModel db, SiteUser user, bool remember=false) { var roles = String.Join("|", value:user.SiteRoles.Select(sr => sr.Name.ToLowerInvariant().Trim()).Distinct().ToArray()); //update the laston record(s) user.UserAgent = Request.UserAgent; user.LastOn = DateTimeOffset.UtcNow; db.SaveChanges(); // Create and tuck away the cookie var authTicket = new FormsAuthenticationTicket( 1 ,user.Username ,DateTime.Now ,DateTime.Now.AddDays(31) //max 31 days ,remember ,string.IsNullOrWhiteSpace(roles) […]

connect-mongo创build的条目不会过期

我有一个使用Express设置的节点服务器,使用Passport进行身份validation。 我听说connect-mongo可以很好地用于持久login会话,所以我build立了一切,似乎一切正常,用户会话被mongo根据过期时间自动删除。 但是,在生产中,每个用户会话都有5000个其他空会话永不过期,我不知道为什么mongo不会自动清理这些会话。 mongo中的空会话示例如下所示: { "_id" : "JMtV5Z1oWRkgh9KIKlwSqwOE", "session" : "{\"cookie\":{\"originalMaxAge\":86400000,\"expires\":\"2014-02-13T22:09:09.948Z\",\"httpOnly\":true,\"path\":\"/\"},\"passport\":{}}", "expires" : Date( 1392329349948 ) } 这是Expressconfiguration代码: var express = require('express') , passport = require('passport') , fs = require('fs') , http = require('http') , https = require('https') , util = require('util') , mongoose = require('mongoose') , MongoStore = require('connect-mongo')(express) , FacebookStrategy = require('passport-facebook').Strategy , […]

req.session.passport和req.user空白,req.isAuthenticated在初次成功login后使用passport-facebook返回false

在Facebook上初次成功login并使用passport-facebook 1.0.3和express 4.6.1进行loginredirectcallback之后,req.session.passport和req.user包含serialize调用期间设置的值(我从stragegy获得),但在后续访问站点上的不同路由时,req.session.passport和req.user为空,req.isAuthenticated()返回false,因此在从FB初始成功login后,所有其他路由上的ensureAuthentication方法失败。 我没有使用集群设置,所以我相信内存存储就足够处理这个,快速configuration看起来很好(我的意思是顺序),这里是我的快速configuration configExpressApp.set('views', './views'); configExpressApp.set('view engine', 'jade'); configExpressApp.use(morgan('dev')); configExpressApp.use(cookieParser()); configExpressApp.use(bodyParser.urlencoded({ extended: true, })); configExpressApp.use(bodyParser.json()); configExpressApp.use(expressSession({ secret:'MyExpressSecret', saveUninitialized: true, resave: true })); configExpressApp.use(passport.initialize()); configExpressApp.use(passport.session()); configExpressApp.use(methodOverride()); configExpressApp.use(express.static('./public')); 这是req.session对象初始的成功login和redirect,req.user包含与req.session.passport.user相同的数据 { cookie: { path: '/', _expires: null, originalMaxAge: null, httpOnly: true }, passport: { user: { _id: 53ce23e3121421f229a438f8, info: false, loginType: 'fb', fbId: 'MyId', name: 'Karthic Rao', […]

redirectNode.js和angular度

我无法尝试使用Node.js,Express和angularredirectPOST请求。 我知道有一个使用forms的标准方式如下: index.ejs <!DOCTYPE html> <html> <head> <title>Redirect Example</title> </head> <body> <p>INDEX PAGE</p> <form action="/redirect" method="post"> <button type="submit">CLICK</button> </form> </body> </html> test.ejs <!DOCTYPE html> <html> <head> <title>Redirect Example</title> </head> <body> <p>YAY REDIRECTED</p> </body> </html> app.js var fs = require('fs'); var https = require('https'); var express = require('express'); var bodyParser = require('body-parser'); var cookieParser = require('cookie-parser'); […]