2015-05-29 2 views
1

У меня есть небольшая функция, работающая с огромными возможностями для приема входящих файлов. Он работает как шарм, но я не вижу нигде в документах об ограничении типов файлов. https://github.com/felixge/node-formidable Кажется, что все остальное покрыто кроме этого.Как ограничить типы файлов грозными js

Есть ли у кого-нибудь еще такое?

 var form = new formidable.IncomingForm(), 
      files = [], 
      fields = [], 
      returnJson = {}; 

     //setup the incoming 
     form.uploadDir = GLOBAL.server_settings.user_content; 
     form.encoding = 'utf-8'; 
     form.maxFieldsSize = 2 * 1024 * 1024; 
     form.maxFields = 1000; 

     form.on('field', function(field, value) { 
      console.log(field, value); 
      fields.push([field, value]); 
     }) 
     /* this is where the renaming happens */ 
     .on ('fileBegin', function(name, file){ 
      var fileType = file.type.split('/').pop(); 
      //rename the incoming file 
      file.path = form.uploadDir + "/" + req.user.id + _ + toolbox.uniqid() + '.' + fileType; 
     }) 
     .on('file', function(field, file) { 
      //on file received 
      console.log(field, file); 
      files.push([field, file]); 
     }) 
     .on('progress', function(bytesReceived, bytesExpected) { 
      //self.emit('progess', bytesReceived, bytesExpected) 
      var percent = (bytesReceived/bytesExpected * 100) | 0; 
      process.stdout.write('Uploading: %' + percent + '\r'); 
     }) 
     .on('end', function() { 
      console.log('-> upload done'); 
      console.log(files); 
      console.log(fields); 
      returnJson.file_data = files; 
      returnJson.fields_data = fields; 
      res.json(returnJson); 
     }); 
     form.parse(req); 

ответ

2

Так что получается после игры вокруг со всем этим .. если вы просто не установить путь к файлу, когда тип файла не то, что вы хотите, это то же самое, как ограничение моего типа файла.

например:

//event listeners for the form.parse() below 
      form.on('field', function(field, value) { 
       console.log(field, value); 
       fields.push([field, value]); 
      }) 
      /* this is where the renaming happens */ 
      .on ('fileBegin', function(name, file){ 
       var fileType = file.type.split('/').pop(); 
       if(fileType == 'jpg' || fileType == 'png' || fileType == 'jpeg'){ 
        //rename the incoming file 
        file.path = form.uploadDir + "/" + images_hash + '_' + image_count + '.' + fileType; 
        //increment image counter for next possible incoming image 
        ++image_count; 
       } else { 
        console.log('incorrect file type: ' + fileType); 
       } 
      }) 
Смежные вопросы