res.send和res.sendFile

res.sendFile(path,[,options][,fn])  只支持express4.8.0之前的版本

通过给定的路径path读取文件,它会根据文件的扩展名设置HTTP的header中的Context-Type属性.

path必须是一个完整的路径.,除非你在options里面设置了root对象.例如

res.sendFile('index.html',{root:__dirname});

options条目

maxAge:  设置 header中 的max-age属性,单位是毫秒,默认是0(这是啥??)

root:  相关文件名的根目录

lastModified:  这个属性标记文件在服务器端最后被修改的时间具体看这里,,默认是false

headers: 包含HTTP的headers

dotfiles:  这个不知道是,但是感觉没啥用,可选值时allow,deny,ignore.默认是ignore

当文件传输完毕或者出错时,它会请求一个回调函数fn(err),回调函数必须对响应做出一个明确的处理:结束或者传递到下一个路由

这是一个包含所有可选项的例子:

app.get('/file/:name', function (req, res, next) {

  var options = {
    root: __dirname + '/public/',
    dotfiles: 'deny',
    headers: {
        'x-timestamp': Date.now(),
        'x-sent': true
    }
  };

  var fileName = req.params.name;
  res.sendFile(fileName, options, function (err) {
    if (err) {
      console.log(err);
      res.status(err.status).end();
    }
    else {
      console.log('Sent:', fileName);
    }
  });
  })

res.sendFile也可以提供细粒度的支持就像这样

app.get('/user/:uid/photos/:file', function(req, res){
  var uid = req.params.uid    , file = req.params.file;

  req.user.mayViewFilesFrom(uid, function(yes){
    if (yes) {
      res.sendFile('/uploads/' + uid + '/' + file);
    } else {
      res.status(403).send('Sorry! you cant see that.');
    }
  });});

res.send:发送一些HTTP响应,这个感觉能说的不多,这里写一下它send的内容参数

res.send(new Buffer('whoop'));
res.send({ some: 'json' });
res.send('<p>some html</p>');
res.status(404).send('Sorry, we cannot find that!');
res.status(500).send({ error: 'something blew up' });


你可能感兴趣的:(res.send和res.sendFile)