javascript - 请问express的post请求如何带参数
PHP中文网
PHP中文网 2017-04-11 11:41:33
0
1
217

初学Node.js,参考《Node.js实战》在做一个图片上传的网站。教程比较久,有些地方我照着express最新版本里面的使用方式改了下。比如:
原本他的路由是这样的:
app.js

app.set('photos', __dirname + '/public/photos');
....
app.get('/', photos.list);
app.get('/upload', photos.form);
app.post('/upload', photos.submit(app.get('photos')));

routes/photo.js

exports.form = function(req, res){
  res.render('photos/upload', {
    title: 'Photo upload' 
  });
};

exports.submit = function (dir) {
  return function(req, res, next){
    var img = req.files.photo.image;
    var name = req.body.photo.name || img.name;
    var path = join(dir, img.name);

    fs.rename(img.path, path, function(err){
      if (err) return next(err);

      Photo.create({
        name: name,
        path: img.name
      }, function(err) {
        if (err) return next(err);
        res.redirect('/');
      });
    });
  };
};

然后我这样改了
app.js

app.set('photos', __dirname + '/public/photos');
....
app.use('/', photos);
app.use('/upload',photos)
app.post('/upload',photos)//问题在这里不知道怎么传参数

routes/photo.js

var express = require('express');
var router = express.Router();
......
router.get('/', function(req, res, next) {
    res.render('photos',{
        title:'photos',
        photos: photos
    });
});

router.get('/upload',function(req, res, next){
    res.render('photos/upload', {
    title: 'Photo upload' 
  });
})
router.post('/upload',function(dir){
    console.log(dir)
    return function(req,res,next){
        var img = req.files.photo.image;
        var name = req.body.photo.name || img.name;
        var path = join(dir, img.name);
        console.log(1)
        fs.rename(img.path, path, function(err){
          if (err) return next(err);
        console.log(2)

          Photo.create({
            name: name,
            path: img.name
          }, function(err) {
            if (err) return next(err);
            res.redirect('/');
          });
        });
    }
})
.......
module.exports=router;

虽然暂时还不知道两种exports的区别= =,但是我按照框架生成的内容仿照着改可行,但是,post方式的那个dir参数在app.js不知道该如何传过去。

app.post('/upload',photos)
PHP中文网
PHP中文网

认证高级PHP讲师

reply all(1)
阿神

app需要use一下你export出去的router。
比如在app.js文件:

var photoRouter = require('photo'); //假设两个在同一个路径下
...

app.use(photoRouter);

...
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!