如何在Multer Express中validationfile upload的大小?

我使用Multer作为Express中的 multipart/form-data中间件。 我想知道如何validation上传的文件的大小,最好是他们正在上传。 我知道你可以在实例化Multer的时候在options对象中设置limits : app.use multer limits: fileSize: 1024 * 1024 但是,这只会截断上传的文件,不允许显示“文件太大”的错误消息。 当文件大小超过限制时。 我也检出了事件处理函数onFileUploadData(file, data) ,您可以在其中访问file对象和data缓冲区。 在这里,我可以通过检查data.length来检查当前的文件大小。 但是,我不清楚如何处理data.length大于我想允许的最大上传文件大小的情况。 最终,我的想法是,当Multerparsing请求并且上传的文件太大时,我想向用户显示一条Flash消息并redirect到表单,以便可以尝试更小的文件。 我的控制器的create行为看起来像这样: exports.create = (req, res) -> Record.create(req.body) .success (record) -> image = req.files.image uploadImage(image, record.id).then -> req.flash 'success', 'Record created.' res.redirect "/records/#{record.id}" .error (err) -> req.flash 'error', err res.redirect 'records/new' 问题是, req.files.image已经是parsing的图像,此时上传到系统tmp文件夹。 所以即使在这里检查文件的大小也不会真的让我防止不必要的大file upload。 一般来说,使用Multer或其他表单parsing中间件来处理Express的file […]

将文件base64发送到Node.js socket.io服务器

我正在用一个HTML5canvas上的socket.io绘图编程一个游戏,当时间结束时,将图像发送到node.js服务器。 有没有办法在图像中转换该canvas,将base64中的图像发送到node.js应用程序,最后将其保存到服务器中?

如何在树莓派上播放声音 – 启动后无需login

我需要用一个node.js脚本在树莓派上播放声音。 当我从命令行自己启动脚本时,一切正常。 当我启动后运行相同的脚本出/etc/rc.local脚本时,我看到我的运行过程时做“PS辅助”,但我不能听到任何声音。 我也尝试在40秒后启动节点脚本,因为我认为有一些初始化的东西或东西的时间太less,但在这段时间内,我可以从命令行启动脚本,听到声音… 我试了两个用户:root和pi。 他们都从cmd工作(因为自动启动后运行脚本的用户是root用户) 我把我的程序链接到/ usr / bin / node,因为如果不是这个进程不能在启动时启动的话。 我强制raspberryPi使用sereo插孔:amixer cset numid = 3 1 我的node.js代码是: var fs = require("fs"); var lame = require("lame"); var Speaker = require("speaker"); var SerialPort = require("serialport").SerialPort; var playing = false; var stream = []; stream[0] = "sound1.mp3"; stream[1] = "sound2.mp3"; stream[2] = "sound3.mp3"; stream[3] = "sound4.mp3"; […]

节点js和eBay API实现

我是一个节点的JS初学者,我需要帮助将控制台日志数据导出到HTML页面。 我在GitHub上find了这个好例子: https : //github.com/benbuckman/nodejs-ebay-api 我的问题是这样的:我设法实现它与我的需求 – 但我不设法从控制台日志中提取数据! 我只是想在浏览器中显示它,而不是在控制台日志中。 有什么build议么 ? 目前正在处理“单个”示例 – 这是我的代码到目前为止,它有很多错误: // example simple request to FindingService:findItemsByKeywords var ebay = require('../index.js'); var http = require('http'); var express = require('express'); var app = express(); var io = require('socket.io'); app.set('port', process.env.PORT || 5000); app.get('/get', function(req, res) { console.log('inside get'); // for avoiding crossbrowser-error res.header('Access-Control-Allow-Origin', […]

如何在sails js应用程序中全局使用knexjs

我如何获得我的控制器中的knex对象或任何其他模型文件,如果我不使用吃水线。 例如:在我的api / models / Users.js中 module.exports = { find : function(id){ // my knex query }, insert : function(data){ // my knex query again } } 所以在我的控制器,我只是做: var result = Users.find(id); 要么 var result = Users.insert({username : 'sailsjs'}); 或者knex对象将在模型文件本身中使用的全局可用…所以,我可以在控制器中执行knex查询 // UsersController / index index : function(req, res){ // my knex query } 谢谢阿里夫

在JavaScript网站上使用Glimpse

我有一个网站是用Node.js / AngularJS编写的,可以调用一个ASP.Net mvc后端。 因为我不使用传统的“Views”和“aspx”页面,在这种情况下有没有办法使用Glimpse?

ctags不能识别node.js和声生成器

如果我有这样的function module.exports.login = function * () { 要么 exports.login = function * (next) { ctags不能够索引它。 有谁知道有这个问题的一些解决方法?

如何检查一个string是否与星号匹配

我有一个文件列表: var files = [ "user_parse_info", "user_parse_age", "site_render_info", "site_parse_name" ] 现在我有一个模式: var pattern = "site_*_name"; 这应该只匹配最后一个文件。 我怎样才能检查这个? 也许RegExp?

Scoket.IO v1.0.x基于令牌的身份validation – 不能传递令牌?

我正在使用本教程来获得基于令牌的身份validation系统的基础知识。 这是我正在使用的代码: 在app.html中: var socket = io('', { // originally I thought the $.param might've been a problem, so I hard coded a token instead // query: $.param({token: 'i271az2Z0PMjhd6w0rX019g0iS7c2q4R'}) query: "token=i271az2Z0PMjhd6w0rX019g0iS7c2q4R" }); 在index.js中: var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); var tokens = [ 'i271az2Z0PMjhd6w0rX019g0iS7c2q4R', 'oWD4sh1eU2Yhn95C05t2YKrKMVWoAFAk' ]; io.set('authorization', function(handshakeData, callback) […]

Node.js + Mongoose.js如何获取命令的总和是放在一个月还是一个星期?

我发现了总体框架,但是如何在一个月或一个星期内完成这些工作? 我正计算一周或一个月内有多less订单。 这些文件是这样的: { "_id" : ObjectId("53834167b54a3b22f0079e2c"), "createdDate" : ISODate("2014-05-26T13:28:07.942Z"), "__v" : 0 }, { "_id" : ObjectId("53834167b54a3b22f0079e2c"), "createdDate" : ISODate("2014-05-28T09:28:07.942Z"), "__v" : 0 } 我想要的是根据createdDate在一个月内放置多less个订单。 我正在使用的当前代码: Order.aggregate([ { "$match": { 'createdDate': { "$gte": new Date("2014-05-25"), "$lte": new Date("2014-05-27") } }}, { "$group": { "_id": { "$dayOfYear": "$createdDate" }, "totalCost": { "$sum": "$totalCost" }, "sum": […]