如何重命名由Formidableparsing的文件?

如何命名由Node中的Formidableparsing的文件? 目前我的文件保存为“7c9d182a9892bb7588b49ea9d364efd0.pdf”,我更喜欢原始文件名。

有人知道怎么做吗?

这是我做的(检查.on(file'…)函数):

// import required modules var express = require('express'); var formidable = require("formidable"); // used for parsing form data var fs = require('fs'); // prevent bodyParser from handling multipart forms (ie only handle get and post requests) delete express.bodyParser.parse['multipart/form-data']; // create server var app = express.createServer(); // connect middleware app.configure(function() { // creates body object on request object app.use(express.bodyParser()); app.use(express.methodOverride()); // used to display static files such as css app.use(express.static(__dirname + '/static')); }); // enable and define views app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); //****************************** //* create routes //****************************** // file upload handling app.get('/photos/new', function(request, response) { response.render('photos/new'); }); app.post('/photos', function(request, response) { console.log('in /photos handler'); var form = new formidable.IncomingForm(); form.uploadDir = __dirname + '/static/upload/photos/'; form.on('file', function(field, file) { //rename the incoming file to the file's name fs.rename(file.path, form.uploadDir + "/" + file.name); }); form.on('error', function(err) { console.log("an error has occured with form upload"); console.log(err); request.resume(); }); form.on('aborted', function(err) { console.log("user aborted upload"); }); form.on('end', function() { console.log('-> upload done'); }); form.parse(request, function() { response.render('photos/new'); }); }); // start our server app.listen(8888); 

这是我自己的答案:

 form.uploadDir = "temp/uploads"; form.keepExtensions = true; form .on('error', function(err) { throw err; }) .on('field', function(field, value) { //receive form fields here }) /* this is where the renaming happens */ .on ('fileBegin', function(name, file){ //rename the incoming file to the file's name file.path = form.uploadDir + "/" + file.name; }) .on('file', function(field, file) { //On file received }) .on('progress', function(bytesReceived, bytesExpected) { //self.emit('progess', bytesReceived, bytesExpected) var percent = (bytesReceived / bytesExpected * 100) | 0; process.stdout.write('Uploading: %' + percent + '\r'); }) .on('end', function() { }); form.parse(req); 

答案是一直在模块的GitHub页面!

你可以从强大的文件对象中获得原来的名字:

 form.parse(req, function(err, fields, files) { var filename = files.upload.name; }); 

希望这可以帮助