github.com/apremalal/vamps-core@v1.0.1-0.20161221121535-d430b56ec174/server/webapps/app/base/plugins/jquery-file-upload/js/jquery.fileupload-validate.js (about) 1 /* 2 * jQuery File Upload Validation Plugin 1.1.2 3 * https://github.com/blueimp/jQuery-File-Upload 4 * 5 * Copyright 2013, Sebastian Tschan 6 * https://blueimp.net 7 * 8 * Licensed under the MIT license: 9 * http://www.opensource.org/licenses/MIT 10 */ 11 12 /* global define, window */ 13 14 (function (factory) { 15 'use strict'; 16 if (typeof define === 'function' && define.amd) { 17 // Register as an anonymous AMD module: 18 define([ 19 'jquery', 20 './jquery.fileupload-process.js' 21 ], factory); 22 } else { 23 // Browser globals: 24 factory( 25 window.jQuery 26 ); 27 } 28 }(function ($) { 29 'use strict'; 30 31 // Append to the default processQueue: 32 $.blueimp.fileupload.prototype.options.processQueue.push( 33 { 34 action: 'validate', 35 // Always trigger this action, 36 // even if the previous action was rejected: 37 always: true, 38 // Options taken from the global options map: 39 acceptFileTypes: '@', 40 maxFileSize: '@', 41 minFileSize: '@', 42 maxNumberOfFiles: '@', 43 disabled: '@disableValidation' 44 } 45 ); 46 47 // The File Upload Validation plugin extends the fileupload widget 48 // with file validation functionality: 49 $.widget('blueimp.fileupload', $.blueimp.fileupload, { 50 51 options: { 52 /* 53 // The regular expression for allowed file types, matches 54 // against either file type or file name: 55 acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i, 56 // The maximum allowed file size in bytes: 57 maxFileSize: 10000000, // 10 MB 58 // The minimum allowed file size in bytes: 59 minFileSize: undefined, // No minimal file size 60 // The limit of files to be uploaded: 61 maxNumberOfFiles: 10, 62 */ 63 64 // Function returning the current number of files, 65 // has to be overriden for maxNumberOfFiles validation: 66 getNumberOfFiles: $.noop, 67 68 // Error and info messages: 69 messages: { 70 maxNumberOfFiles: 'Maximum number of files exceeded', 71 acceptFileTypes: 'File type not allowed', 72 maxFileSize: 'File is too large', 73 minFileSize: 'File is too small' 74 } 75 }, 76 77 processActions: { 78 79 validate: function (data, options) { 80 if (options.disabled) { 81 return data; 82 } 83 var dfd = $.Deferred(), 84 settings = this.options, 85 file = data.files[data.index], 86 fileSize; 87 if (options.minFileSize || options.maxFileSize) { 88 fileSize = file.size; 89 } 90 if ($.type(options.maxNumberOfFiles) === 'number' && 91 (settings.getNumberOfFiles() || 0) + data.files.length > 92 options.maxNumberOfFiles) { 93 file.error = settings.i18n('maxNumberOfFiles'); 94 } else if (options.acceptFileTypes && 95 !(options.acceptFileTypes.test(file.type) || 96 options.acceptFileTypes.test(file.name))) { 97 file.error = settings.i18n('acceptFileTypes'); 98 } else if (fileSize > options.maxFileSize) { 99 file.error = settings.i18n('maxFileSize'); 100 } else if ($.type(fileSize) === 'number' && 101 fileSize < options.minFileSize) { 102 file.error = settings.i18n('minFileSize'); 103 } else { 104 delete file.error; 105 } 106 if (file.error || data.files.error) { 107 data.files.error = true; 108 dfd.rejectWith(this, [data]); 109 } else { 110 dfd.resolveWith(this, [data]); 111 } 112 return dfd.promise(); 113 } 114 115 } 116 117 }); 118 119 }));