将上传的文件存储在Express Js的文件系统中

我是nodejs的新手,想知道如何把一个文件放到我的系统后台甚至上传到S3等

这里是文件对象:

req.body { homeColor: 'black', guestColor: 'white', thirdColor: 'red', file: { webkitRelativePath: '', lastModifiedDate: '2014-05-05T02:26:11.000Z', name: '2014-05-05 10.26.11.jpg', type: 'image/jpeg', size: 1310720 }, title: 'tfuyiboinini' } 

如何处理req.body.file,以便可以进行物理保存?

请帮忙,谢谢!

长话短说

 var fs = require('fs'); app.post('/file-upload', function(req, res) { var tmp_path = req.files.thumbnail.path; var target_path = './public/images/' + req.files.thumbnail.name; fs.rename(tmp_path, target_path, function(err) { if (err) throw err; fs.unlink(tmp_path, function() { if (err) throw err; res.send('File uploaded to: ' + target_path + ' - ' + req.files.thumbnail.size + ' bytes'); }); }); }; 

你可以阅读更多关于它在这里: http : //www.hacksparrow.com/handle-file-uploads-in-express-node-js.html

首先确保你的POST编码为enctype="multipart/form-data" ….

在Express 4中,您需要在服务器中设置body parser

 var bodyParser = require('dy-parser'); //... var app = express(); //... app.use(bodyParser()); // pull information from html in POST var busboy = require('connect-busboy'); app.use(busboy()); 

在Express的早期版本中,只需要从框架本身添加正文parsing器,文件将存储在已configuration的位置:

  app.use(express.bodyParser({limit: '10mb', uploadDir: __dirname + '/public/uploads' })); // pull information from html in POST 

由于版本4删除了对连接的支持,因此您需要将对多部分/表单数据的自定义支持添加到parsing器多/部分POST中,因此您将必须执行以下操作:

 var fs = require('fs'); var busboy = require('connect-busboy'); //... app.use(busboy()); //... app.post('/fileupload', function(req, res) { var fstream; req.pipe(req.busboy); req.busboy.on('file', function (fieldname, file, filename) { console.log("Uploading: " + filename); fstream = fs.createWriteStream(__dirname + '/files/' + filename); file.pipe(fstream); fstream.on('close', function () { res.redirect('back'); }); }); });