【问题标题】:Limit the number of downloads限制下载次数
【发布时间】:2018-03-10 03:00:15
【问题描述】:

我真的是使用 mongoDB 和 node.js 的新手,我试图限制我服务器中每个文件的下载次数。我正在使用 gridfs 将文件存储在数据库中,并在生成能够下载文件的链接后,我需要限制每个文件的下载次数,但不知道该怎么做。

【问题讨论】:

  • 就像文件一样,您可以将下载计数存储在单独的mongodb数据库或集合中。

标签: javascript node.js mongodb gridfs


【解决方案1】:

假设你使用 express 作为你的 node.js http 服务器,你可以这样做:

const app = require('express')();
const bucket = new mongodb.GridFSBucket(db, {
  chunkSizeBytes: 1024,
  bucketName: 'songs'
});

const downloads = {};

const fileURI = '/somefile.mp3';
const maxDownload = 100;

app.get(fileURI, function(req, res) {
  if (downloads[fileURI] <= maxDownload) {
      // pipe the file to res
      return bucket.openDownloadStreamByName('somefile.mp3').
      .pipe(res)
      .on('error', function(error) {
          console.error(error);
      })
      .on('finish', function() {
          console.log('done!');
          downloads[fileURI] = downloads[fileURI] || 0;
          downloads[fileURI]++;
      });
    } 

    return res.status(400).send({ message: 'download limit reached' });
});    

app.listen(8080);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 2017-02-25
    • 2013-06-27
    • 2013-01-23
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多