2017-07-23 214 views
3

送到我要上传文件到请求中指定的(在名称字段)的文件夹名称我尝试添加req.body.name但未定义 这是代码更改文件夹名称,以强大的名称要求

var mongoose = require('mongoose'); 
var DataBase = require('../models/resource').DataBase; 
var formidable = require('formidable'), 
    http = require('http'), 
    util = require('util'); 
var mkdirp = require('mkdirp'); 
var fs = require('fs'); 
exports.upload = function (req, res) { 
var uploadDir = './uploads/databses/'+req.body.name; 
mkdirp(uploadDir, function (err) { 
    if (err) return cb(err); 
    var form = new formidable.IncomingForm({ 
    uploadDir: uploadDir, 
    keepExtensions: true 
}); 
form.on('progress', function(bytesReceived, bytesExpected) { 
    console.log(100 * bytesReceived/bytesExpected + '%'); 
}); 
form.parse(req, function(err, fields, files) {  
     res.writeHead(200, { 
      'content-type': 'text/plain' 
     }); 
     res.write('received upload:\n\n'); 
     res.end(util.inspect({ 
      fields: fields, 
      files: files 
     })); 
    }); 

}); 
}; 
+0

使用身体解析器解析你的预期要求。 https://github.com/expressjs/body-parser – Burdy

回答

3

解决方案,我发现的是我创建的文件夹移动到新的

 var uploadDir = './uploads/databses/temp/'; 

     var form = new formidable.IncomingForm({ 
     uploadDir=uploadDir,  
     keepExtensions: true 
     }); 
     form.on('progress', function(bytesReceived, bytesExpected) { 
     console.log(100 * bytesReceived/bytesExpected + '%'); 
     }); 
     form.parse(req)  
     .on('field', function(name, fields) { 
     var body = JSON.parse(fields); 

     uploadDir='./uploads/databses/'+body.nameOfFolder+'/'; 
     form.uploadDir=uploadDir; 
     }).on('file', function(name, files) { 
     //moving temp to new folder 
     mv('./uploads/databses/temp', form.uploadDir, {mkdirp: true}, 
     function(err) { 

     }); 
     res.end(util.inspect({ 
     files: files 
     })); 
     }) 
     .on('error', function(err) { 
     next(err); 
     }) 
     .on('end', function() { 
     res.end(); 
     });