2016-08-12 7 views
2

multerを使用してファイルをアップロードした後、ページをリダイレクトするときに問題が発生します。ファイルのアップロードでは、私もいくつかのテキストをデータベースに保存しています。ここに私のコードです。multerを使用してページをアップロードしてリダイレクト

質問:

ファイルと内容が、私は新しいURLにページをリダイレクトする方法をDBに保存されますか?

私は現在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); 

DBにレコードを保存しますファイルやコンテンツ

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'); 


      }); 
} 

注:httpリクエストを送信するためにNODE REST CLIENTも使用しました。

答えて

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 

     }); 

    }); 


}); 

UPDATE あなたはフラッシュメッセージを使用するようにconst flash = require('express-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. 
+0

は、私はそれを試してみますよ。 HTMLページから 'msg'をどのように取得することができますか? – Illep

+0

詳細を更新しました – agaezcode

関連する問題