Articles of 强大

如何使用Express安全地上传Node中的文件?

在节点中有很多关于file upload的文章,教程和问题,但大部分是针对初学者的,并没有一个完全解释了如何保证file upload的生产。 我很努力地find一个完整的答案,但是没有成功。 以下是我的发现的解释。 限制上传的文件大小: app.use(express.limit('4mb')); 限制file upload到只有某些路线:我不能得到这个实际工作,但这里是我曾经试过: 更换: app.use(express.bodyParser()); 同 app.use(express.json()); app.use(express.urlencoded()); 并将多部分中间件添加到每个上载路由: app.post('/upload', express.multipart(), uploadController.uploadPhoto); 这部分不起作用,但如果我离开express.bodyParser() ,上传工作正常。 那么我做错了什么? 在保存上传到磁盘之前检查上传的文件types: 我无法弄清楚这一部分,但有一个build议是编写一个自定义中间件,使用强大的parsingfile upload,并试图调整文件的大小,然后保存(假设它是一个图像)使用图像魔术库。 build议这样做会使图像安全并确保它实际上是一个图像(因为如果图像不是图像,该过程将失败)。 这只会影响图像,所以它不是一个完整的解决scheme。 我怎样才能实现呢? 任何示例代码? 还有什么,我失踪上传是安全的?

nodejs强大不会触发任何事件

我在express3.x上使用强大的 app.post "/up",(req,res)-> formidable = require('formidable') form = new formidable.IncomingForm() form.uploadDir = __dirname + "/uploads" form.encoding = 'binary' form.addListener 'file',(name,file) -> #write file console.log('file uploaded') return console.log('$$$$$$$$$$$') form.addListener 'end', -> console.log('end') res.end() return console.log('@@@@@$$$$') form.parse req,(err,fields,files)-> console.log('parse') console.log(err) if(err) return console.log('######') return 和上传表单是 block content :coffeescript $ -> formData = new FormData() xhr = new […]

GraphicsMagick进程导致空文件

我正在这样做 gm(jpgName).setFormat('jpg') .resize(160,158) .compress('JPEG') .write(fs.createWriteStream(jpgName),function(err){ if(err){ console.log(err,jpgName); res.send(400); }else{ console.log('file formated to jpg' + jpgName); 我得到了 { [Error: Command failed: gm convert: Empty input file (/home/ubuntu/node/uploads/icon.jpg). ] code: 1, signal: null } 如果我在此处写入的第一行之前停止代码,然后查看该文件,则它具有文件长度。 如果我让这个过程发生(错误),然后看看文件,那么它有一个0字节的大小。 我也试过这个: fs.stat(jpgName, function (err, stats) { console.log('file size:',stats.size); gm(jpgName).setFormat('jpg') .resize(160,158) .compress('JPEG') .write(fs.createWriteStream(jpgName),function(err){ if(err){ console.log('console.log error writing jpg file',err,jpgName); fs.unlink(jpgName); callback(400); return; […]

nodejs&强大的头部错误

以下内容: 节点初学者书 我无法debugging此问题或在线查找解决scheme。 Node.js的新手,希望有人能提供一个解决scheme 错误:更新与控制台日志信息2012年2月11日星期六上午7时27分17秒 Request for/ received! About to route a request for / Request handler 'start' was called. Request for/favicon.ico received! About to route a request for /favicon.ico No request handler found for /favicon.ico Request for/favicon.ico received! About to route a request for /favicon.ico No request handler found for /favicon.ico Request for/upload received! […]

使用Node.js,Async和Formidable进行error handling

在下面的代码片段中,我想validation第一个asynchronous方法中的字段。 如果他们无效,我想立即返回一个错误给用户。 我怎么做? var form = new formidable.IncomingForm(); async1.series([ function (callback) { form.parse(req); form.on('field', function (name, val) { // Get the fields }); form.on('fileBegin', function (name, file) { if (file.name !== "") { file.path = __dirname + '/upload/' + file.name; } }); callback(); }, function (callback) { form.on('file', function (name, file) { try { // […]