【问题标题】:Upload and redirect page using multer使用 multer 上传和重定向页面
【发布时间】:2016-12-19 18:43:28
【问题描述】:

我在使用multer 成功上传文件后重定向页面时遇到问题。通过文件上传,我还将一些文本保存到数据库中。这是我的代码。

问题:

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

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

Multer方法上传文件到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');

                }

            });


        }

    });



});

将记录保存到数据库并进行回调的函数

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请求。

【问题讨论】:

    标签: node.js amazon-s3 multer node-rest-client multer-s3


    【解决方案1】:

    这应该有效。如果没有,请告诉我。

    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());appexpress 加载如下: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.
    

    【讨论】:

    • 我试试看。你能告诉我如何从 HTML 页面中检索 msg 吗?
    • 更新了更多细节
    猜你喜欢
    • 1970-01-01
    • 2022-11-23
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 2012-10-16
    • 2012-12-18
    相关资源
    最近更新 更多