1/* 2Huploadify 3version : 2.1.1 4author : å大豹 5publish date : 2014/01/27 6site : http://www.cnblogs.com/lvdabao 7*/ 8(function($){ 9$.fn.Huploadify = function(opts){ 10 var itemTemp = '<div id="${fileID}" class="uploadify-queue-item"><div class="uploadify-progress"><div class="uploadify-progress-bar"></div></div><span class="up_filename">${fileName}</span><span class="uploadbtn">ä¸ä¼ </span><span class="delfilebtn">å é¤</span></div>'; 11 var defaults = { 12 fileTypeExts:'*.*',//å 许ä¸ä¼ çæä»¶ç±»åï¼æ ¼å¼'*.jpg;*.doc' 13 uploader:'',//æä»¶æäº¤çå°å 14 auto:false,//æ¯å¦å¼å¯èªå¨ä¸ä¼ 15 method:'post',//åé请æ±çæ¹å¼ï¼getæpost 16 multi:false,//æ¯å¦å è®¸éæ©å¤ä¸ªæä»¶ 17 formData:{},//åéç»æå¡ç«¯çåæ°ï¼æ ¼å¼ï¼{key1:value1,key2:value2} 18 fileObjName:'file',//å¨å端æ¥åæä»¶çåæ°åç§°ï¼å¦PHPä¸ç$_FILES['file'] 19 fileSizeLimit:2048,//å 许ä¸ä¼ çæä»¶å¤§å°ï¼åä½KB 20 showUploadedPercent:true,//æ¯å¦å®æ¶æ¾ç¤ºä¸ä¼ çç¾åæ¯ï¼å¦20% 21 showUploadedSize:false,//æ¯å¦å®æ¶æ¾ç¤ºå·²ä¸ä¼ çæä»¶å¤§å°ï¼å¦1M/2M 22 buttonText:'éæ©æä»¶',//ä¸ä¼ æé®ä¸çæå 23 removeTimeout: 1,//ä¸ä¼ 宿åè¿åº¦æ¡çæ¶å¤±æ¶é´ 24 itemTemplate:itemTemp,//ä¸ä¼ éåæ¾ç¤ºçæ¨¡æ¿ 25 breakPoints:false,//æ¯å¦å¼å¯æç¹ç»ä¼ 26 fileSplitSize:1024*1024,//æç¹ç»ä¼ çæä»¶å大å°ï¼åä½Byteï¼é»è®¤1M 27 getUploadedSize:null,//ç±»åï¼functionï¼èªå®ä¹è·åå·²ä¸ä¼ æä»¶ç大å°å½æ°ï¼ç¨äºå¼å¯æç¹ç»ä¼ 模å¼ï¼å¯ä¼ å ¥ä¸ä¸ªåæ°fileï¼å³å½åä¸ä¼ çæä»¶å¯¹è±¡ï¼éè¿ånumberç±»å 28 saveUploadedSize:null,//ç±»åï¼functionï¼èªå®ä¹ä¿åå·²ä¸ä¼ æä»¶ç大å°å½æ°ï¼ç¨äºå¼å¯æç¹ç»ä¼ 模å¼ï¼å¯ä¼ å ¥ä¸¤ä¸ªåæ°ï¼fileï¼å½åä¸ä¼ çæä»¶å¯¹è±¡ï¼valueï¼å·²ä¸ä¼ æä»¶ç大å°ï¼åä½Byte 29 saveInfoLocal:false,//ç¨äºå¼å¯æç¹ç»ä¼ 模å¼ï¼æ¯å¦ä½¿ç¨localStorageåå¨å·²ä¸ä¼ æä»¶å¤§å° 30 onUploadStart:null,//ä¸ä¼ å¼å§æ¶çå¨ä½ 31 onUploadSuccess:null,//ä¸ä¼ æåçå¨ä½ 32 onUploadComplete:null,//ä¸ä¼ 宿çå¨ä½ 33 onUploadError:null, //ä¸ä¼ 失败çå¨ä½ 34 onInit:null,//åå§åæ¶çå¨ä½ 35 onCancel:null,//å 餿æä¸ªæä»¶åçåè°å½æ°ï¼å¯ä¼ å ¥åæ°file 36 onSelect:null//éæ©æä»¶åæ§è¡çå¨ä½ï¼å¯ä¼ å ¥åæ°filesï¼æä»¶å表 37 } 38 39 var option = $.extend(defaults,opts); 40 if(option.auto){ 41 42 } 43 //å°æä»¶çåä½ç±bytes转æ¢ä¸ºKBæMBï¼è¥ç¬¬äºä¸ªåæ°æå®ä¸ºtrueï¼åæ°¸è¿è½¬æ¢ä¸ºKB 44 var formatFileSize = function(size,byKB){ 45 if (size> 1024 * 1024&&!byKB){ 46 size = (Math.round(size * 100 / (1024 * 1024)) / 100).toString() + 'MB'; 47 } 48 else{ 49 size = (Math.round(size * 100 / 1024) / 100).toString() + 'KB'; 50 } 51 return size; 52 } 53 //æ ¹æ®æä»¶åºå·è·åæä»¶ 54 var getFile = function(index,files){ 55 for(var i=0;i<files.length;i++){ 56 if(files[i].index == index){ 57 return files[i]; 58 } 59 } 60 return false; 61 } 62 63 //å°è¾å ¥çæä»¶ç±»åå符串转å为æ°ç»,åæ ¼å¼ä¸º*.jpg;*.png 64 var getFileTypes = function(str){ 65 var result = []; 66 var arr1 = str.split(";"); 67 for(var i=0,len=arr1.length;i<len;i++){ 68 result.push(arr1[i].split(".").pop()); 69 } 70 return result; 71 } 72 73 var mimetypeMap = { 74 zip : ['application/x-zip-compressed'], 75 jpg : ['image/jpeg'], 76 png : ['image/png'], 77 gif : ['image/gif'], 78 doc : ['application/msword'], 79 xls : ['application/msexcel'], 80 docx : ['application/vnd.openxmlformats-officedocument.wordprocessingml.document'], 81 xlsx : ['application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'], 82 ppt : ['application/vnd.ms-powerpoint '], 83 pptx : ['application/vnd.openxmlformats-officedocument.presentationml.presentation'], 84 mp3 : ['audio/mp3'], 85 mp4 : ['video/mp4'], 86 pdf : ['application/pdf'] 87 }; 88 89 //æ ¹æ®åç¼åè·å¾æä»¶çmimeç±»å 90 var getMimetype = function(name){ 91 return mimetypeMap[name]; 92 } 93 94 //æ ¹æ®é ç½®çå符串ï¼è·å¾ä¸ä¼ ç»ä»¶acceptçå¼ 95 var getAcceptString = function(str){ 96 var types = getFileTypes(str); 97 var result = []; 98 for(var i=0,len=types.length;i<len;i++){ 99 var mime = getMimetype(types[i]); 100 if(mime){ 101 result.push(mime); 102 } 103 } 104 return result.join(','); 105 } 106 107 //åéæä»¶å彿° 108 var sendBlob = function(url,xhr,file,formdata){ 109 console.log(888); 110 xhr.open(option.method, url, true); 111 xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); 112 var fd = new FormData(); 113 fd.append(option.fileObjName,file); 114 if(formdata){
115 for(key in formdata){ 116 fd.append(key,formdata[key]); 117 } 118 } 119 xhr.send(fd); 120 } 121 122 var fileObj = null; 123 124 this.each(function(){ 125 var _this = $(this); 126 var cname='uploadify-button'; 127 var ctxt=option.buttonText; 128 if($(this).attr("id")=='cell-uppic-btn'){ 129 cname='uploadify-button uploadify-button-2'; 130 ctxt=''; 131 } 132 //å æ·»å ä¸fileæé®åä¸ä¼ å表 133 var instanceNumber = $('.uploadify').length+1; 134 var inputStr = '<input id="select_btn_'+instanceNumber+'" class="selectbtn" style="display:none;" type="file" name="fileselect[]"'; 135 inputStr += option.multi ? ' multiple' : ''; 136 inputStr += ' accept="'; 137 inputStr += getAcceptString(option.fileTypeExts); 138 inputStr += '"/>'; 139 inputStr += '<a id="file_upload_'+instanceNumber+'-button" href="javascript:void(0)" class="'+cname+'">'; 140 inputStr += ctxt; 141 inputStr += '</a>'; 142 var uploadFileListStr = '<div id="file_upload_'+instanceNumber+'-queue" class="uploadify-queue"></div>'; 143 _this.append(inputStr+uploadFileListStr); 144 145 146 //å建æä»¶å¯¹è±¡ 147 fileObj = { 148 uploadAllowed: true, 149 fileInput: _this.find('.selectbtn'), //html fileæ§ä»¶ 150 uploadFileList : _this.find('.uploadify-queue'), 151 container : _this, //ä¸ä¼ æ§ä»¶çå¤å±divå¼ç¨ 152 url: option.uploader, //ajaxå°å 153 fileFilter: [], //è¿æ»¤åçæä»¶æ°ç» 154 uploadOver:true, //䏿¬¡ä¸ä¼ æ¯å¦çæ£ç»æï¼ç¨äºæç¹ç»ä¼ çæ åµ 155 filter: function(files) { //éæ©æä»¶ç»çè¿æ»¤æ¹æ³ 156 var arr = []; 157 var typeArray = getFileTypes(option.fileTypeExts); 158 if(typeArray.length>0){ 159 for(var i=0,len=files.length;i<len;i++){ 160 var thisFile = files[i]; 161 console.log(option.uploader); 162 if(parseInt(formatFileSize(thisFile.size,true))>option.fileSizeLimit){ 163 alert('æä»¶'+thisFile.name+'大å°è¶ åºéå¶ï¼'); 164 continue; 165 } 166 if($.inArray(thisFile.name.split('.').pop().toLowerCase(),typeArray)>=0 || $.inArray('*', typeArray)>=0){ 167 arr.push(thisFile); 168 } 169 else{ 170 alert('æä»¶'+thisFile.name+'ç±»åä¸å 许ï¼'); 171 } 172 } 173 } 174 return arr; 175 }, 176 //æä»¶éæ©å 177 funSelect: function(files){ 178 console.log(9999); 179 for(var i=0,len=files.length;i<len;i++){ 180 var file = files[i]; 181 if(/.*[\u4e00-\u9fa5]+.*$/.test(file.name)) { 182 alert('对ä¸èµ·ï¼å¾çåç§°ä¸è½å å«ä¸æ'); 183 }else{ 184 //å¤ç模æ¿ä¸ä½¿ç¨çåé 185 var $html = $(option.itemTemplate.replace(/\${fileID}/g,'fileupload_'+instanceNumber+'_'+file.index).replace(/\${fileName}/g,file.name).replace(/\${fileSize}/g,formatFileSize(file.size)).replace(/\${instanceID}/g,_this.attr('id'))); 186 //妿æ¯èªå¨ä¸ä¼ ï¼å»æä¸ä¼ æé® 187 if(option.auto){ 188 $html.find('.uploadbtn').remove(); 189 } 190 //妿å¼å¯æç¹ç»ä¼ ï¼å åå§å忥ä¸ä¼ çæä»¶å¤§å° 191 var initWidth = 0,initFileSize = '0KB',initUppercent = '0%'; 192 option.breakPoints=false;//my 193 if(option.breakPoints){ 194 var uploadedSize = this.funGetUploadedSize(file); 195 //å 设置è¿åº¦æ¡ä¸ºåæ¥å·²ä¸ä¼ çæä»¶å¤§å° 196 initWidth = (uploadedSize / file.size * 100) + '%'; 197 initFileSize = formatFileSize(uploadedSize); 198 initUppercent = (uploadedSize / file.size * 100).toFixed(2) + '%'; 199console.log(3234242422); 200 $html.find('.uploadify-progress-bar').css('width',initWidth);
201 } 202 203 this.uploadFileList.append($html); 204 205 //夿æ¯å¦æ¾ç¤ºå·²ä¸ä¼ æä»¶å¤§å° 206 if(option.showUploadedSize){ 207 var num = '<span class="progressnum"><span class="uploadedsize">'+initFileSize+'</span>/<span class="totalsize">${fileSize}</span></span>'.replace(/\${fileSize}/g,formatFileSize(file.size)); 208 $html.find('.uploadify-progress').after(num); 209 } 210 211 //夿æ¯å¦æ¾ç¤ºä¸ä¼ ç¾åæ¯ 212 if(option.showUploadedPercent){ 213 var percentText = '<span class="up_percent">'+initUppercent+'</span>'; 214 $html.find('.uploadify-progress').after(percentText); 215 } 216 option.onSelect&&option.onSelect(files); 217 218 //夿æ¯å¦æ¯èªå¨ä¸ä¼ 219 if(option.auto){ 220 console.log(2412142314); 221 this.funUploadFile(file); 222 } 223 else{ 224 console.log(4243324234); 225 //妿é ç½®éèªå¨ä¸ä¼ ï¼ç»å®ä¸ä¼ äºä»¶ 226 $html.find('.uploadbtn').on('click',(function(file){ 227 return function(){fileObj.funUploadFile(file);} 228 })(file)); 229 } 230 //为å 餿件æé®ç»å®å 餿件äºä»¶ 231 $html.find('.delfilebtn').on('click',(function(file){ 232 return function(){fileObj.funDeleteFile(file.index);} 233 })(file)); 234 } 235 } 236 237 238 }, 239 onProgress: function(file, loaded, total) { 240 var eleProgress = _this.find('#fileupload_'+instanceNumber+'_'+file.index+' .uploadify-progress'); 241 242 var thisLoaded = loaded; 243 //æ ¹æ®ä¸ä¸æ¬¡è§¦åprogressæ¶ä¸ä¼ ç大å°ï¼å¾å°æ¬æ¬¡çå¢é 244 var lastLoaded = eleProgress.attr('lastLoaded') || 0; 245 loaded -= parseInt(lastLoaded); 246 247 var progressBar = eleProgress.children('.uploadify-progress-bar'); 248 var oldWidth = option.breakPoints ? parseFloat(progressBar.get(0).style.width || 0) : 0; 249 var percent = (loaded / total * 100 + oldWidth).toFixed(2); 250 251 var percentText = percent > 100 ? '99.99%' : percent+'%';//æ ¡æ£åèäºå ¥ç计ç®è¯¯å·® 252 if(option.showUploadedSize){ 253 eleProgress.nextAll('.progressnum .uploadedsize').text(formatFileSize(loaded)); 254 eleProgress.nextAll('.progressnum .totalsize').text(formatFileSize(total)); 255 } 256 if(option.showUploadedPercent){ 257 eleProgress.nextAll('.up_percent').text(percentText); 258 } 259 260 progressBar.css('width',percentText); 261 262 //è®°å½æ¬æ¬¡è§¦åprogressæ¶å·²ä¸ä¼ ç大å°ï¼ç¨æ¥è®¡ç®ä¸æ¬¡éå¢å çæ°é 263 if(thisLoaded<option.fileSplitSize){ 264 eleProgress.attr('lastLoaded',thisLoaded); 265 } 266 else{ 267 eleProgress.removeAttr('lastLoaded'); 268 } 269 270 }, //æä»¶ä¸ä¼ è¿åº¦ 271 272 /* å¼ååæ°åå ç½®æ¹æ³åç线 */ 273 274 //è·åå½åè¿åº¦æ¡ç宽度ï¼è¿åå符串å¦90% 275 funGetProgressWidth: function(index){ 276 var eleProgressBar = _this.find('#fileupload_'+instanceNumber+'_'+index+' .uploadify-progress-bar'); 277 return eleProgressBar.get(0).style.width || ''; 278 }, 279 280 //è·åå·²ä¸ä¼ çæä»¶ç大å°ï¼å½å¼å¯æç¹ç»ä¼ æ¨¡å¼ 281 funGetUploadedSize: function(file){ 282 if(option.getUploadedSize){ 283 return option.getUploadedSize(file); 284 } 285 else{ 286 if(option.saveInfoLocal){ 287 return parseInt(localStorage.getItem(file.name)) || 0; 288 } 289 } 290 }, 291 292 funSaveUploadedSize: function(file,value){ 293 if(option.saveUploadedSize){ 294 option.saveUploadedSize(file,value); 295 } 296 else{ 297 if(option.saveInfoLocal){ 298 localStorage.setItem(file.name,value); 299 } 300 } 301 }, 302 303 //è·åéæ©æä»¶ï¼fileæ§ä»¶ 304 funGetFiles: function(e) { 305 // è·åæä»¶å表对象 306 var files = e.target.files; 307 //ç»§ç»æ·»å æä»¶ 308 files = this.filter(files); 309 for(var i=0,len=files.length;i<len;i++){ 310 this.fileFilter.push(files[i]); 311 } 312 this.funDealFiles(files); 313 return this; 314 }, 315 316 //é䏿件çå¤çä¸åè° 317 funDealFiles: function(files) { 318 var fileCount = _this.find('.uploadify-queue .uploadify-queue-item').length;//éåä¸å·²ç»æçæä»¶ä¸ªæ°
319 for(var i=0,len=files.length;i<len;i++){ 320 files[i].index = ++fileCount; 321 files[i].id = 'fileupload_'+instanceNumber+'_'+files[i].index; 322 } 323 //æ§è¡éæ©åè° 324 this.funSelect(files); 325 326 return this; 327 }, 328 329 //å é¤å¯¹åºçæä»¶ 330 funDeleteFile: function(index) { 331 for (var i = 0,len=this.fileFilter.length; i<len; i++) { 332 var file = this.fileFilter[i]; 333 if (file.index == index) { 334 if(option.breakPoints){ 335 this.uploadAllowed = false; 336 } 337 this.fileFilter.splice(i,1); 338 _this.find('#fileupload_'+instanceNumber+'_'+index).fadeOut(); 339 fileObj.fileInput.val(''); 340 option.onCancel&&option.onCancel(file); 341 break; 342 } 343 } 344 return this; 345 }, 346 347 //æä»¶ä¸ä¼ 348 funUploadFile: function(file) { 349 var xhr = false; 350 var originalFile = file;//ä¿ååå§ä¸ºåå²çæä»¶ 351 var thisfile = _this.find('#fileupload_'+instanceNumber+'_'+file.index); 352 var regulateView = function(){ 353 if(fileObj.uploadOver){ 354 thisfile.find('.uploadify-progress-bar').css('width','100%'); 355 option.showUploadedSize&&thisfile.find('.uploadedsize').text(thisfile.find('.totalsize').text()); 356 option.showUploadedPercent&&thisfile.find('.up_percent').text('100%'); 357 } 358 }//æ ¡æ£è¿åº¦æ¡åä¸ä¼ æ¯ä¾ç误差 359 360 try{ 361 xhr=new XMLHttpRequest();//å°è¯å建 XMLHttpRequest 对象ï¼é¤ IE å¤çæµè§å¨é½æ¯æè¿ä¸ªæ¹æ³ã 362 }catch(e){ 363 xhr=ActiveXobject("Msxml12.XMLHTTP");//使ç¨è¾æ°çæ¬ç IE å建 IE å ¼å®¹ç对象ï¼Msxml2.XMLHTTPï¼ã 364 } 365 366 if(option.breakPoints){ 367 var fileName = file.name,fileId = file.id,fileIndex = file.index, fileSize = file.size;//å ä¿å忥çæä»¶åç§° 368 var uploadedSize = parseInt(this.funGetUploadedSize(originalFile)); 369 //对æä»¶è¿è¡åå²ï¼å¹¶ä¿ç忥çä¿¡æ¯ 370 file = originalFile.slice(uploadedSize,uploadedSize + option.fileSplitSize); 371 file.name = fileName;file.id = fileId;file.index = fileIndex; 372 } 373 console.log(33333); 374 if (xhr.upload && uploadedSize !== false) { 375 // ä¸ä¼ ä¸ 376 xhr.upload.addEventListener("progress", function(e) { 377 fileObj.onProgress(file, e.loaded, originalFile.size); 378 }, false); 379 380 console.log(4444); 381 console.log( xhr); 382 // æä»¶ä¸ä¼ æåææ¯å¤±è´¥ 383 xhr.onreadystatechange = function(e) { 384 console.log(5555); 385 console.log(xhr.readyState); 386 if (xhr.readyState == 4) { 387 fileObj.uploadOver = true; 388 if (xhr.status == 200) { 389 390 var returnData = xhr.responseText ? JSON.parse(xhr.responseText) : {} ; 391 //å°æä»¶åæ°æ®æ´æ°å°æ¬å°è®°å½ 392 if(option.breakPoints){ 393 //æ´æ°å·²ä¸ä¼ æä»¶å¤§å°ï¼ä¿åå°æ¬å° 394 uploadedSize += option.fileSplitSize; 395 fileObj.funSaveUploadedSize(originalFile,uploadedSize); 396 //ç»§ç»ä¸ä¼ å ¶ä»ç段 397 if(uploadedSize<fileSize){ 398 fileObj.uploadOver = false; 399 if(fileObj.uploadAllowed){ 400 file = originalFile.slice(uploadedSize,uploadedSize + option.fileSplitSize); 401 file.name = fileName;file.id = fileId;file.index = fileIndex;file.size = fileSize; 402 sendBlob(fileObj.url,xhr,file,option.formData); 403 } 404 } 405 else{ 406 regulateView(); 407 } 408 } 409 else{ 410 regulateView(); 411 } 412 413 if(fileObj.uploadOver){ 414 option.onUploadSuccess&&option.onUploadSuccess(originalFile, xhr.responseText); 415 //卿å®çé´éæ¶é´åå æè¿åº¦æ¡ 416 417 //console.log('fileupload_'+instanceNumber+'_'+originalFile.index); 418 _this.find('#fileupload_'+instanceNumber+'_'+originalFile.index).fadeOut(); 419 420 } 421 422 } else { 423 console.log(666); 424 fileObj.uploadOver&&option.onUploadError&&option.onUploadError(originalFile, xhr.responseText); 425 } 426 427 if (fileObj.uploadOver) { 428 option.onUploadComplete&&option.onUploadComplete(originalFile,xhr.responseText); 429 //æ¸ é¤æä»¶éæ©æ¡ä¸çå·²æå¼ 430 fileObj.fileInput.val(''); 431 }; 432 433 } 434 }; 435 436 console.log(7777); 437 console.log(option.onUploadStart()); 438 option.onUploadStart&&option.onUploadStart(); 439 // å¼å§ä¸ä¼
440 //option.formData['file_name'] = originalFile.name; 441 //option.formData['last_time'] = originalFile.lastModifiedDate.getTime(); 442 443 option.formData.fileName = originalFile.name; 444 option.formData.lastModifiedDate = originalFile.lastModifiedDate.getTime(); 445 fileObj.uploadAllowed = true;//éç½®å 许ä¸ä¼ 为true 446 sendBlob(this.url,xhr,file,option.formData); 447 } 448 }, 449 450 init: function() { 451 //æä»¶éæ©æ§ä»¶éæ© 452 if (this.fileInput.length>0) { 453 this.fileInput.change(function(e) { 454 fileObj.funGetFiles(e); 455 }); 456 } 457 458 //ç¹å»ä¸ä¼ æé®æ¶è§¦åfileçclickäºä»¶ 459 _this.find('.uploadify-button').on('click',function(){ 460 _this.find('.selectbtn').trigger('click'); 461 }); 462 463 option.onInit&&option.onInit(); 464 } 465 }; 466 //åå§åæä»¶å¯¹è±¡ 467 fileObj.init(); 468 469 }); 470 471 var returnObj = { 472 stop : function(){ 473 fileObj.uploadOver = false; 474 fileObj.uploadAllowed = false; 475 }, 476 upload : function(fileIndex){ 477 if(fileIndex === '*'){ 478 for(var i=0,len=fileObj.fileFilter.length;i<len;i++){ 479 fileObj.funUploadFile(fileObj.fileFilter[i]); 480 } 481 } 482 else{ 483 var file = getFile(fileIndex,fileObj.fileFilter); 484 file && fileObj.funUploadFile(file); 485 } 486 }, 487 cancel : function(fileIndex){ 488 if(fileIndex === '*'){ 489 for(var i=0,len=fileObj.fileFilter.length;i<len;i++){ 490 fileObj.funDeleteFile(++i); 491 } 492 } 493 else{ 494 fileObj.funDeleteFile(fileIndex); 495 } 496 }, 497 disable : function(instanceID){ 498 var parent = instanceID ? $('file_upload_'+instanceID+'-button') : $('body'); 499 parent.find('.uploadify-button').css('background-color','#888').off('click'); 500 }, 501 ennable : function(instanceID){ 502 //ç¹å»ä¸ä¼ æé®æ¶è§¦åfileçclickäºä»¶ 503 var parent = instanceID ? $('file_upload_'+instanceID+'-button') : $('body'); 504 parent.find('.uploadify-button').css('background-color','#707070').on('click',function(){ 505 parent.find('.selectbtn').trigger('click'); 506 }); 507 }, 508 destroy : function(){ 509 fileObj.container.html(''); 510 }, 511 settings : function(name,value){ 512 if(arguments.length==1){ 513 return option[name]; 514 } 515 else{ 516 if(name=='formData'){ 517 option.formData = $.extend(option.formData, value); 518 } 519 else{ 520 option[name] = value; 521 } 522 } 523 }, 524 Huploadify : function(){ 525 var method = arguments[0]; 526 if(method in this){ 527 Array.prototype.splice.call(arguments, 0, 1); 528 this[method].apply(this[method], arguments); 529 } 530 } 531 }; 532 533 return returnObj; 534} 535 536})(jQuery)
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.