2016-08-12 7 views
2

성공적인 파일 업로드 후 multer을 사용하여 페이지를 리디렉션하는 데 문제가 있습니다. 파일을 업로드 할 때 일부 텍스트를 데이터베이스에 저장하고 있습니다. 여기 내 코드가있다.멀터를 사용하여 페이지 업로드 및 리디렉션

질문 : 파일 내용이 DB에 저장됩니다

가 어떻게 새로운 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); 

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


      }); 
} 

참고 : 또한 NODE REST CLIENT을 사용하여 http 요청을 보냈습니다.

답변

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