使用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.
- 将较大的CSV文件加载到DynamoDb中的最佳/最佳方法
- NodeJS AWS S3代理有时会挂起 – 重新启动帮助
- 错误:使用AWS Lambda上的gm降低图片质量时,stream会产生空缓冲区
- 用Node / Knox上传到S3:socket挂断
- gm aws lambda中的错误:string产生空的缓冲区
- 如何使用nodejs将图像上传到s3时设置过期date
- 直接到s3 /客户端file upload。 用这种方法是否存在将未使用的文件存储在s3存储桶中的问题?
- 如何设置使用Amazon Lambda在S3中创build的文件的打开/下载权限?
- 使用Lambda节点从S3上的文件创buildS3上的zip文件