Tag: 表示

使用ExpressJS限制文件大小时将streamfile upload到S3

我想将用户的file upload到S3。 我有一个Web客户端/ NodeJS Express解决scheme。 到目前为止,在我的研究中,我发现使用分段上传,我可以做任何一个这样的: 1.)如果直接使用pipe道启用stream,那么我无法控制文件的大小 。 2.)如果需要控制大小,必须禁用pipe道/stream,并且必须将文件写入磁盘或内存缓冲区才能检查文件大小,然后将其传送到S3。 有什么办法可以让这两个? 我正在看以下中间件: 打杂 多党 multer 强大

用require导入连接angular色对象

我正在用nodejs和expressjs构build一个应用程序。 对于身份validation和用户angular色,我分别使用passport和connect-roles。 我已经build立了connect-roles对象,如下所示: https : //github.com/ForbesLindesay/connect-roles 像这样: var user = new ConnectRoles() 这是在我的app.js. 然后我导出这样的对象,如下所示: exports.user = user; 但是,如果我需要导入这个对象,我会看到一个奇怪的行为,请检查下面的代码: var express = require('express'); var router = express.Router(); var user = require('../app.js'); //1 console.log(user); /* GET users listing. */ router.get('/', function(req, res) { //2 console.log(user); res.send('respond with a resource'); }); module.exports = router; 情况1中的对象是未定义的,而情况2中的情况应该是这样。基本上,我得到2个不同的对象,这取决于我在router.get函数内部还是外部。 我已经debugging了半天,但我无法弄清楚发生了什么。 问题是应该注入这个对象来提供angular色pipe理,如下所示: router.get('/', […]

将ExpressJS视图ejs渲染保存为一个variables

我正在设置一个从Expressjs启动的确认邮件。 这个电子邮件模板是在html(现在ejs),我需要传递variables,所以我可以稍后保存在一个variables,并发送给nodemailer。 我试图做这样的事情成功: var final_html = res.render('confirm', {variables: 'aasdad'}); NodeMailer代码: var mailOptions = { from: test@test.com, // sender address to: 'test@test.com', // list of receivers subject: 'Welcome '+req.body.name, // Subject line html: final_html }; 怎么能做到这一点? 提前致谢! PD:发布答案编号: var final_html = res.render('confirm', {url: 'aasdad'}, function(err, html) { if (err){ return err;} return html; });

fs writeFile在应用程序根目录下创build临时文件

我有下面的代码片段[加载文件到服务器。 它在本地环境中按预期工作,但不在Web服务器中工作。 使用connect-multiparty path = req.files.FIELDNAME.path; ogname = req.files.video.originalFilename; function(path , ogname, callback) { var fs = require('fs'); var uploadDir = process.cwd() + "/public/uploads/"; fs.readFile(path, function (err, data) { var originalFilename = new Date().getTime() + '-' + ogname.replace(/[\s,:-]+/g, "-"); var newPath = uploadDir + originalFilename; var relatPath = "/uploads/" + originalFilename; fs.writeFile(newPath, data, function (err,result) […]

Express.js和Socket.io

我正在使用Express和Socket.io构build一个聊天系统。 我想了解这两个框架在这种types的项目中的function是什么,因为咨询我感到困惑的API。 这有什么区别: 使用EXPRESS 3/4 var app = require('express')(); var server = require('http').Server(app); var io = require('socket.io')(server); server.listen(80); app.get('/', function (req, res) { res.sendfile(__dirname + '/index.html'); }); io.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); socket.on('my other event', function (data) { console.log(data); }); }); 和这个: 使用EXPRESS框架 var app = require('express').createServer(); var io = require('socket.io')(app); […]

请求服务器日志中的第三方网站

在我的web服务器日志中(我正在使用express运行node.js),混合了有效的文件请求,我看到以下内容: [app-0 (out)] GET / 200 1ms – 3.95kb [app-0 (out)] GET / 200 2ms – 3.95kb [app-0 (out)] GET / 200 1ms – 3.95kb —[app-0 (out)] GET http://www.mafengwo.com/ 200 1ms – 3.95kb [app-0 (out)] GET / 304 1ms 我不是“magengwo.com”的所有者,我不确定攻击者是如何查询我的web服务器的另一个网站的(而且它有点让人担心,那个节点以200响应)。 我会认为这是一件坏事,虽然我不知道如何重现这个问题。 任何帮助或解释什么发生在这里将不胜感激

在AngularJS,NodeJS,MongoDB,Mongoose和ExpressJS中使用单一表单发布到多个集合

我想要一个表单发布到mongo的两个集合。 HTML看起来像什么 <form> …Field1 …Field2 …Field3 …Field4 </form> 控制器会是什么样子 app.controller….. $scope.var = {$scope.fields}….. $http post… …Field 1 & Field 2 to Mongo Collection 1 …Field 3 & Field 4 to Mongo Collection 2 基本上不需要2个独立的表单来提供2个集合。 这可能吗? 提前致谢 追

Nodejs多部分file upload,生成大于原始文件

我想用Express 4编写一个Nodejs服务器的file upload器。我不想使用任何中间件来达到这个目的,因为这更像是一个理论练习,以更好地理解Nodejs如何工作和分段上传。 以下是Express 4中路由的主要代码,它收集客户端数据并将其写出。 var clientData = []; // When Data Arrives req.on('data', function(data){ clientData.push(data); }); // Done req.on('end', function(){ var output = Buffer.concat(clientData); fs.writeFile('Thisisthesong.mp3', output, 'binary', function(err){ if (err) throw err; debug('Wrote out song'); }); }); 我的问题是,当文件最后写出来,比原来的大。 例如,如果我要上传一个原来为10.5 MB的代码的MP3,结果是11 MB。 我相信这与将编码从身体来回切换写出来有关。 我也明白,节点并没有真正的二进制编码,这可能是一个问题? 我也认为这可能是因为我没有剥离数据的边界或内容configuration(这将是下一步,一旦运行良好),但边界和configuration只有大约300字节而不是500KB 。 有没有人有解释或可以指出我做错了什么,我将不胜感激。 其他信息: +快递4 +除了cookieparser,我现在还没有使用任何中间件 + Ubuntu 12.04 +节点v0.10.31

来自Express的EJSvariables引用显示为未定义

在用户Jobsamuel的很多帮助之后,我一直在尝试从API调用中获取数据以显示在浏览器中: // An express route. app.get('/activities', function (req, res) { if (req.user !== null) { // User is authenticated. getUserActivities(req.user.id, res); } else { // Redirect to login the user isn't authenticated. res.redirect('/login'); } }); // This function will make API calls to Fitbit // using the User ID we got from the PassportJS // […]

Node.js:使用快速路由进行url重写以代理etherpad

我的第一个问题在stackoverflow;)。 我想做的事情是:我想使用快速path“/ pad / *”来显示etherpad(etherpad lite),并操作用户将看到的内容。 所以,如果我得到“/ pad / p / something”,那么“something”将被处理,并相应地改变为真实ID,例如“XYZ”。 所以用户可以编辑正确的键盘。 然而,etherpad需要大量的静态东西和websocket,因此我想代理它,并操纵身份证,如果我需要 最小的工作示例:当然,ID变化的真正逻辑要复杂得多,但对于最小工作示例,我只是使用每个padID映射到“a”的逻辑。 我想出了这个: /* packages */ var express = require( "express" ); var http = require( "http" ); var httpProxy = require('http-proxy'); /* app */ var app = express(); app.use(app.router); /* some express logic */ app.get( '/' , function( req , res […]