如何在SailsJS v1.0中设置队长限制?

时间:2019-04-16 07:02:17

标签: sails.js

当上传大于10mb的文件时,我目前遇到问题。我正在将它们上传到s3存储桶。

我试图用bodyparser在内置于中间件中的船长中设置限制。

order: [
  'cookieParser',
  'session',
  'myRequestLogger',
  'bodyParser',
  'compress',
  'poweredBy',
  'router',
  'www',
  'favicon',
],

myRequestLogger: function (req, res, next) {
  sails.log("Requested :: ", req.method, req.url);
  return next();
},

/***************************************************************************
 *                                                                          *
 * The body parser that will handle incoming multipart HTTP requests.       *
 *                                                                          *
 * https://sailsjs.com/config/http#?customizing-the-body-parser             *
 *                                                                          *
 ***************************************************************************/

bodyParser: (function _configureBodyParser() {
  var skipper = require('skipper');
  var middlewareFn = skipper({
    strict: true,
    limit: '50mb'
  });
  return middlewareFn;
})(),

这似乎根本没有使用所设置的limit属性。

任何有关此的建议都会有所帮助。

1 个答案:

答案 0 :(得分:0)

我不确定您在哪里找到了Skipper的limit选项,但是在skipper-s3skipper之间记录了限制上传文件的大小。

在您的操作/控制器中收到上传内容时,指定maxBytes选项应该可以。

如果您要将文件上传到多个动作/控制器,则将最大文件大小保留在sails.config.custom.maxUploadFilesize之类的位置,因此可以在单个位置进行配置-找不到任何全局Skipper选项但我可能会错过它。

const MAX_UPLOAD_BYTES = 10 * 1024 * 1024;

req.file('avatar')
.upload({
  // Required
  adapter: require('skipper-s3'),
  key: 'thekyehthethaeiaghadkthtekey',
  secret: 'AB2g1939eaGAdesoccertournament',
  bucket: 'my_stuff',
  maxBytes: MAX_UPLOAD_BYTES
}, function whenDone(err, uploadedFiles) {
  if (err) {
    return res.serverError(err);
  }
  return res.ok({
    files: uploadedFiles,
    textParams: req.params.all()
  });
});