diff --git a/js/jquery.multifile.js b/js/jquery.multifile.js index 9b9a23b7d47065e1ecdea827f4b4d2cc05574dc6..c402021a637f84b159167c578dd3e935688fca58 100644 --- a/js/jquery.multifile.js +++ b/js/jquery.multifile.js @@ -50,7 +50,23 @@ if(fObj.data('files')>=settings.max_uploads || (fObj.data('files')+file.count)>settings.max_uploads) { alert('You have reached the maximum number of files ('+ settings.max_uploads+') allowed per upload'); - } else if($.fn.multifile.checkFileTypes(file, settings.allowedFileTypes)) { + } else if(!$.fn.multifile.checkFileTypes(file, settings.allowedFileTypes)) { + var msg = 'Selected file type is NOT allowed'; + if(file.count>1) + msg = 'File type of one or more of the selected files is NOT allowed'; + + alert('Error: '+msg); + + $this.replaceWith(new_input); + } else if(!$.fn.multifile.checkFileSize(file, settings.max_file_size)) { + var msg = 'Selected file size is NOT allowed'; + if(file.count>1) + msg = 'File size of one or more of the selected files is NOT allowed'; + + alert('Error: '+msg); + + $this.replaceWith(new_input); + } else { $this.hide(); settings @@ -61,15 +77,6 @@ fObj.data('files', fObj.data('files')+file.count); if(fObj.data('files')<settings.max_uploads) $this.after(new_input); - - } else { - var msg = 'Selected file type is NOT allowed'; - if(file.count>1) - msg = 'File type of one or more of the selected files is NOT allowed'; - - alert('Error: '+msg); - - $this.replaceWith(new_input); } } @@ -126,6 +133,16 @@ if(filenames[i] && $.inArray('.'+filenames[i].split('.').pop(), allowedFileTypes) == -1) return false; + return true; + }; + + $.fn.multifile.checkFileSize = function(file, MaxFileSize) { + + var filesizes = $.map(file.size.split(','), $.trim); + for (var i = 0, _len = filesizes.length; i < _len; i++) + if(filesizes[i] > MaxFileSize) + return false; + return true; }; @@ -150,16 +167,19 @@ file.count = 1; // check for HTML5 FileList support if ( !!global.FileList ) { - if ( input.files.length == 1 ) + if ( input.files.length == 1 ) { file.name = input.files[0].name; - else { //Multi-select + file.size = '' + input.files[0].size; + } else { //Multi-select // We do this in order to support `multiple` files. // You can't display them separately because they // belong to only one file input. It is impossible // to remove just one of the files. file.name = input.files[0].name; - for (var i = 1, _len = input.files.length; i < _len; i++) + for (var i = 1, _len = input.files.length; i < _len; i++) { file.name += ', ' + input.files[i].name; + file.size += ', ' + input.files[i].size; + } file.count = i; } @@ -173,6 +193,7 @@ //Default options $.fn.multifile.defaults = { max_uploads: 1, - file_types: '.*' + file_types: '.*', + max_file_size: 2048 }; })(jQuery, this); diff --git a/js/osticket.js b/js/osticket.js index ceca388f0d15339967933876f29f43688d5854cf..1d0235e7990f18f222fc3a64704e33a25a9df86d 100644 --- a/js/osticket.js +++ b/js/osticket.js @@ -64,6 +64,7 @@ $(document).ready(function(){ $('.multifile').multifile({ container: '.uploads', max_uploads: ($config && $config.max_file_uploads)?$config.max_file_uploads:1, - file_types: ($config && $config.file_types)?$config.file_types:".*" + file_types: ($config && $config.file_types)?$config.file_types:".*", + max_file_size: ($config && $config.max_file_size)?$config.max_file_size:2048 }); }); diff --git a/scp/js/scp.js b/scp/js/scp.js index cf32e42d8b638ff1b465cb23eb9a196e72be31ba..2f70d6391fb2915d23aabc986f4c6c4674f1c269 100644 --- a/scp/js/scp.js +++ b/scp/js/scp.js @@ -259,7 +259,8 @@ $(document).ready(function(){ $('.multifile').multifile({ container: '.uploads', max_uploads: ($config && $config.max_file_uploads)?$config.max_file_uploads:1, - file_types: ($config && $config.file_types)?$config.file_types:".*" + file_types: ($config && $config.file_types)?$config.file_types:".*", + max_file_size: ($config && $config.max_file_size)?$config.max_file_size:2048 }); /* Datepicker */