meteoramazon-s3meteor-slingshot

How to limit file uploads to Amazon S3 with Slingshot.createDirective


Am trying to limit my uploads to amazon s3 to 10 pictures, i came across this link https://github.com/themeteorchef/uploading-files-to-amazon-s3/blob/master/code/server/slingshot.js

for some reason it doesn't work with me this is my code

Slingshot.createDirective( "uploadToAmazonS3Cg2", Slingshot.S3Storage, {
  bucket: "bucket-name",
  region: 'ap-southeast-1',
  acl: "public-read",
  authorize: function () {
    return true;
  },
  key: function ( file ) {
    var user = Meteor.users.findOne( this.userId );
    return user.emails[0].address + "/screenshots" + "/" + file.name;
  }
});

here is my uploader in the html file

  Application ScreenShots:
  {{> uploader config="2"}}

and this is how am calling my slingshot method based on the link i attached above

 var uploader
  if (config === '1') {
      uploader = new Slingshot.Upload( "uploadToAmazonS3Cg1" );
  } 
  if (config === '2') {
      uploader = new Slingshot.Upload( "uploadToAmazonS3Cg2" );
  } else {
      uploader = new Slingshot.Upload( "uploadToAmazonS3Cg3" );
  }

i returned true, from my understanding, it should allow me to upload as many as i want but i only can upload one file. am i missing something here? are there any alternatives to set the limitation?


Solution

  • Taking a look at the source-code for slingshot, you need to upload the files one at a time. To limit the number of files uploaded in total by a user, you'd need to use the authorize function and store how many files they've uploaded in Mongo. I'm not sure if you mean 10 files total or 10 at a time based on your question, but if it was 10 files at a time you'd simply validate that using jQuery validation on your file input element.