2016-07-12 4 views
0
var express = require('express'); 
var router = express.Router(); 
var multer = require('multer'); 
var storage = multer.diskStorage({ 
    destination: function (req, file, cb) { 
     cb(null, 'public/uploads/'); 
    }, 
    filename: function (req, file, cb) { 
     cb(null, file.originalname); 
    } 
}); 
var upload = multer({ 
    storage: storage, fileFilter: function (req, file, cb) { 
     if (file.mimetype !== 'image/png' && file.mimetype !== 'image/jpg' && file.mimetype !== 'image/jpeg') { 
      return cb(null, false); 
     } 
     return cb(null, true); 
    } 
}).any(); 



/* get home page. */ 
router.get('/', function (req, res) { 
    res.render('index', { title: 'express' }); 
}); 

router.post('/', function (req, res) { 
    upload(req, res, function (err) { 
     if (err) { 
      //I want to jump to another page 
     } else { 
      res.send(req.files); 
     } 
    });  
}); 


module.exports = router; 

if(err)条件私はビューフォルダの下に作成したページをリダイレクトしたいと思います。しかし、res.redirect( 'wrong')やres.redirect( 'views/wrong')を使うと、うまく動作しませんでした。実際に私はたくさんの方法を試しましたが、それらのすべてが機能しませんでした。ファイルをアップロードしても写真はアップロードしないと、そのファイルに[]が1つ入ったページにジャンプします。リダイレクトを行うにはどうすればよいですか?エクスプレスjs内の他のページをリダイレクトするためにfilefilterを使用することができません

+0

res.redirect()に有効なルートを指定する必要があります。それは眺めを受け入れません。 –

+0

res.redirect( '/ your-redirect-url')を試しましたか。 ? –

+0

よろしいですか?私には有効なルートがありません。では、ビューフォルダの下に書いたページをどのように表示できますか? – OtakuFitness

答えて

0

代替手段があります。この場合、誤ったタイプのファイルをアップロードすると間違ったメッセージが表示されることがあります。

var express = require('express'); 
var router = express.Router(); 
var multer = require('multer'); 
var storage = multer.diskStorage({ 
    destination: function (req, file, cb) { 
     cb(null, 'public/uploads/'); 
    }, 
    filename: function (req, file, cb) { 
     cb(null, file.originalname); 
    } 
}); 
var upload = multer({ 
    storage: storage, fileFilter: function (req, file, cb) { 
     if (file.mimetype !== 'image/png' && file.mimetype !== 'image/jpg' && file.mimetype !== 'image/jpeg') { 
      req.fileValidationError = 'goes wrong on the mimetype'; 
      return cb(null, false, new Error('goes wrong on the mimetype')); 
     } 
     return cb(null, true); 
    } 
}).any(); 



/* get home page. */ 
router.get('/', function (req, res) { 
    res.render('index', { title: 'express' }); 
}); 

router.post('/', function (req, res) { 
    upload(req, res, function (err) { 
     if (req.fileValidationError) { 
      //I want to jumpt to another page 
      res.send("You didn't upload a valid pic"); 
     } else { 
      res.send(req.files); 
     } 
    });  
}); 


module.exports = router; 
0

あなたはこのようなものを使用することができますあなたのページで

router.post('/', function (req, res) { 
    upload(req, res, function (err) { 
     if (err) { 
      res.redirect('/?error=upload_error'); 
     } else { 
      res.send(req.files); 
     } 
    });  
}); 

使用upload_errorがエラーを表示します。

+0

すみません。私はあなたのポイントを得ていませんでした。 – OtakuFitness

関連する問題