使用Mulder上传和redirect页面

我有一个问题,redirect的页面成功的file upload后,使用multer 。 随着file upload,我也保存一些文本到数据库中。 这是我的代码。

题 :

当文件和内容保存在数据库中时,如何将页面redirect到新的URL?

我目前正在使用res.redirect('product/item'); 但没有任何反应。 我也尝试使用res.render ,但页面没有redirect。

Multer方法将file upload到Amazon S3

 var upload = multer({ storage: multerS3({ s3: s3, bucket: 'nameofthebucket', metadata: function (req, file, cb) { var ext = file.originalname.split('.').pop(); cb(null, {fieldName: 'file.fieldname' + '.' + ext}); }, filename: function(req,file,cb){ var ext = file.originalname.split('.').pop(); cb(null, Date.now() + '.' + ext); }, key: function (req, file, cb) { var ext = file.originalname.split('.').pop(); cb(null, Date.now() + '.' + ext); } }) }) var upload = upload.array('fileup', 10); 

代码负责上传文件和内容

 router.post('/uploadfileandcontent',function(req,res,next){ upload(req,res,function(err) { if(err) { } else { saveRecordsToDB(req, function(err,data){ if (err) { res.redirect('/errorpage'); } else { res. redirect('product/item'); } }); } }); }); 

将logging保存到数据库并进行callback的function

 function saveRecordsToDB (req, callback){ var args = { data: { "name" : req.body.name, // "age" : req.body.age }, headers: { "Content-Type": "application/json" } }; // registering remote methods client.registerMethod("postMethod", "http://url/uploadfileandcontent", "POST"); var req =client.methods.postMethod(args, function (data, response) { callback(null, 'success?'); }); req.on('error', function (err) { console.log('error'); }); } 

注意:我也使用NODE REST CLIENT来发送http请求。

这应该工作。 告诉我,如果没有。

 router.post('/uploadfileandcontent', function(req,res,next){ upload(req,res,function(err) { if(err) { res.send('Error while uploading.'); } saveRecordsToDB(req, function(err,data){ if (err) { console.log(err); req.flash('error', { msg: 'Error while saving data.' }); // Flash message -> need to configure your template to show it } // Saved to DB req.flash('success', { msg: 'Saved' }); res.redirect('/product/item'); // go to this page }); }); }); 

更新你将需要包括const flash = require('express-flash'); 使用Flash消息。 然后你可以加载它到你的应用程序是这样的: app.use(flash()); 。 该app是这样express加载: const app = express();

在你的HTML中,你将在一个数组中访问它。 使用Jade的例子:

 //success if messages.success for success in messages.success div #{success.msg} // Saved //Error if messages.errors for error in messages.errors div #{error.msg} // Error while saving data.