uploadifive 改进版 用于HTML5手机网站上传图片

[javascript]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. /* 
  2. UploadiFive 1.1.2 
  3. Copyright (c) 2012 Reactive Apps, Ronnie Garcia 
  4. Released under the UploadiFive Standard License <http://www.uploadify.com/uploadifive-standard-license> 
  5. */  
  6. (function(b) {  
  7.     var a = {  
  8.         init: function(c) {  
  9.             return this.each(function() {  
  10.                 var g = b(this);  
  11.                 g.data("uploadifive", {  
  12.                     inputs: {},  
  13.                     inputCount: 0,  
  14.                     fileID: 0,  
  15.                     queue: {  
  16.                         count: 0,  
  17.                         selected: 0,  
  18.                         replaced: 0,  
  19.                         errors: 0,  
  20.                         queued: 0,  
  21.                         cancelled: 0  
  22.                     },  
  23.                     uploads: {  
  24.                         current: 0,  
  25.                         attempts: 0,  
  26.                         successful: 0,  
  27.                         errors: 0,  
  28.                         count: 0  
  29.                     }  
  30.                 });  
  31.                 var d = g.data("uploadifive");  
  32.                 var f = d.settings = b.extend({  
  33.                     auto: true,  
  34.                     buttonClass: false,  
  35.                     buttonText: "Select Files",  
  36.                     checkScript: false,  
  37.                     dnd: true,  
  38.                     dropTarget: false,  
  39.                     fileObjName: "Filedata",  
  40.                     fileSizeLimit: 0,  
  41.                     fileType: false,  
  42.                     formData: {},  
  43.                     height: 30,  
  44.                     itemTemplate: false,  
  45.                     method: "post",  
  46.                     multi: true,  
  47.                     overrideEvents: [],  
  48.                     queueID: false,  
  49.                     queueSizeLimit: 0,  
  50.                     removeCompleted: false,  
  51.                     simUploadLimit: 0,  
  52.                     truncateLength: 0,  
  53.                     uploadLimit: 0,  
  54.                     uploadScript: "uploadifive.php",  
  55.                     width: 100  
  56.                 },  
  57.                 c);  
  58.                 if (isNaN(f.fileSizeLimit)) {  
  59.                     var e = parseInt(f.fileSizeLimit) * 1.024;  
  60.                     if (f.fileSizeLimit.indexOf("KB") > -1) {  
  61.                         f.fileSizeLimit = e * 1000;  
  62.                     } else {  
  63.                         if (f.fileSizeLimit.indexOf("MB") > -1) {  
  64.                             f.fileSizeLimit = e * 1000000;  
  65.                         } else {  
  66.                             if (f.fileSizeLimit.indexOf("GB") > -1) {  
  67.                                 f.fileSizeLimit = e * 1000000000;  
  68.                             }  
  69.                         }  
  70.                     }  
  71.                 } else {  
  72.                     f.fileSizeLimit = f.fileSizeLimit * 1024;  
  73.                 }  
  74.                 d.inputTemplate = b('<input type="file">').css({  
  75.                     "font-size": f.height + "px",  
  76.                     opacity: 0,  
  77.                     position: "absolute",  
  78.                     right: "-3px",  
  79.                     top: "-3px",  
  80.                     "z-index": 999  
  81.                 });  
  82.                 d.createInput = function() {  
  83.                     var j = d.inputTemplate.clone();  
  84.                     var k = j.name = "input" + d.inputCount++;  
  85.                     if (f.multi) {  
  86.                         j.attr("multiple"true);  
  87.                     }  
  88.                     j.bind("change",  
  89.                     function() {  
  90.                         d.queue.selected = 0;  
  91.                         d.queue.replaced = 0;  
  92.                         d.queue.errors = 0;  
  93.                         d.queue.queued = 0;  
  94.                         var l = this.files.length;  
  95.                         d.queue.selected = l;  
  96.                         if ((d.queue.count + l) > f.queueSizeLimit && f.queueSizeLimit !== 0) {  
  97.                             if (b.inArray("onError", f.overrideEvents) < 0) {  
  98.                                 alert("The maximum number of queue items has been reached (" + f.queueSizeLimit + ").  Please select fewer files.");  
  99.                             }  
  100.                             if (typeof f.onError === "function") {  
  101.                                 f.onError.call(g, "QUEUE_LIMIT_EXCEEDED");  
  102.                             }  
  103.                         } else {  
  104.                             for (var m = 0; m < l; m++) {  
  105.                                 file = this.files[m];  
  106.                                 d.addQueueItem(file);  
  107.                             }  
  108.                             d.inputs[k] = this;  
  109.                             d.createInput();  
  110.                         }  
  111.                         if (f.auto) {  
  112.                             a.upload.call(g);  
  113.                         }  
  114.                         if (typeof f.onSelect === "function") {  
  115.                             f.onSelect.call(g, d.queue);  
  116.                         }  
  117.                     });  
  118.                     if (d.currentInput) {  
  119.                         d.currentInput.hide();  
  120.                     }  
  121.                     d.button.append(j);  
  122.                     d.currentInput = j;  
  123.                 };  
  124.                 d.destroyInput = function(j) {  
  125.                     b(d.inputs[j]).remove();  
  126.                     delete d.inputs[j];  
  127.                     d.inputCount--;  
  128.                 };  
  129.                 d.drop = function(m) {  
  130.                     d.queue.selected = 0;  
  131.                     d.queue.replaced = 0;  
  132.                     d.queue.errors = 0;  
  133.                     d.queue.queued = 0;  
  134.                     var l = m.dataTransfer;  
  135.                     var k = l.name = "input" + d.inputCount++;  
  136.                     var j = l.files.length;  
  137.                     d.queue.selected = j;  
  138.                     if ((d.queue.count + j) > f.queueSizeLimit && f.queueSizeLimit !== 0) {  
  139.                         if (b.inArray("onError", f.overrideEvents) < 0) {  
  140.                             alert("The maximum number of queue items has been reached (" + f.queueSizeLimit + ").  Please select fewer files.");  
  141.                         }  
  142.                         if (typeof f.onError === "function") {  
  143.                             f.onError.call(g, "QUEUE_LIMIT_EXCEEDED");  
  144.                         }  
  145.                     } else {  
  146.                         for (var o = 0; o < j; o++) {  
  147.                             file = l.files[o];  
  148.                             d.addQueueItem(file);  
  149.                         }  
  150.                         d.inputs[k] = l;  
  151.                     }  
  152.                     if (f.auto) {  
  153.                         a.upload.call(g);  
  154.                     }  
  155.                     if (typeof f.onDrop === "function") {  
  156.                         f.onDrop.call(g, l.files, l.files.length);  
  157.                     }  
  158.                     m.preventDefault();  
  159.                     m.stopPropagation();  
  160.                 };  
  161.                 d.fileExistsInQueue = function(k) {  
  162.                     for (var j in d.inputs) {  
  163.                         input = d.inputs[j];  
  164.                         limit = input.files.length;  
  165.                         for (var l = 0; l < limit; l++) {  
  166.                             existingFile = input.files[l];  
  167.                             if (existingFile.name == k.name && !existingFile.complete) {  
  168.                                 return true;  
  169.                             }  
  170.                         }  
  171.                     }  
  172.                     return false;  
  173.                 };  
  174.                 d.removeExistingFile = function(k) {  
  175.                     for (var j in d.inputs) {  
  176.                         input = d.inputs[j];  
  177.                         limit = input.files.length;  
  178.                         for (var l = 0; l < limit; l++) {  
  179.                             existingFile = input.files[l];  
  180.                             if (existingFile.name == k.name && !existingFile.complete) {  
  181.                                 d.queue.replaced++;  
  182.                                 a.cancel.call(g, existingFile, true);  
  183.                             }  
  184.                         }  
  185.                     }  
  186.                 };  
  187.                 if (f.itemTemplate == false) {  
  188.                     d.queueItem = b('<div class="uploadifive-queue-item">                        <a class="close" href="#">X</a>                        <div><span class="filename"></span><span class="filesize"></span><span class="fileinfo"></span></div>                        <div class="progress">                            <div class="progress-bar"></div>                        </div>                    </div>');  
  189.                 } else {  
  190.                     d.queueItem = b(f.itemTemplate);  
  191.                 }  
  192.                 d.addQueueItem = function(k) {  
  193.                     if (b.inArray("onAddQueueItem", f.overrideEvents) < 0) {  
  194.                         d.removeExistingFile(k);  
  195.                         k.queueItem = d.queueItem.clone();  
  196.                         k.queueItem.attr("id", f.id + "-file-" + d.fileID++);  
  197.                         k.queueItem.find(".close").bind("click",  
  198.                         function() {  
  199.                             a.cancel.call(g, k);  
  200.                             return false;  
  201.                         });  
  202.                         var m = k.name;  
  203.                         if (m.length > f.truncateLength && f.truncateLength != 0) {  
  204.                             m = m.substring(0, f.truncateLength) + "...";  
  205.                         }  
  206.                         k.queueItem.find(".filename").html(m);  
  207.                         var fileSize = Math.round(file.size / 1024);  
  208.                         var suffix = 'KB';  
  209.                         if (fileSize > 1000) {  
  210.                             fileSize = Math.round(fileSize / 1000);  
  211.                             suffix = 'MB';  
  212.                         }  
  213.                         var fileSizeParts = fileSize.toString().split('.');  
  214.                         fileSize = fileSizeParts[0];  
  215.                         if (fileSizeParts.length > 1) {  
  216.                             fileSize += '.' + fileSizeParts[1].substr(0, 2);  
  217.                         }  
  218.                         fileSize += suffix;  
  219.                         file.queueItem.find('.filesize').html('('+fileSize+')');  
  220.   
  221.                         k.queueItem.data("file", k);  
  222.                         d.queueEl.append(k.queueItem);  
  223.                     }  
  224.                     if (typeof f.onAddQueueItem === "function") {  
  225.                         f.onAddQueueItem.call(g, k);  
  226.                     }  
  227.                     if (f.fileType) {  
  228.                         if (b.isArray(f.fileType)) {  
  229.                             var j = false;  
  230.                             for (var l = 0; l < f.fileType.length; l++) {  
  231.                                 if (k.type.indexOf(f.fileType[l]) > -1) {  
  232.                                     j = true;  
  233.                                 }  
  234.                             }  
  235.                             if (!j) {  
  236.                                 d.error("FORBIDDEN_FILE_TYPE", k);  
  237.                             }  
  238.                         } else {  
  239.                             if (k.type.indexOf(f.fileType) < 0) {  
  240.                                 d.error("FORBIDDEN_FILE_TYPE", k);  
  241.                             }  
  242.                         }  
  243.                     }  
  244.                     if (k.size > f.fileSizeLimit && f.fileSizeLimit != 0) {  
  245.                         d.error("FILE_SIZE_LIMIT_EXCEEDED", k);  
  246.                     } else {  
  247.                         d.queue.queued++;  
  248.                         d.queue.count++;  
  249.                     }  
  250.                 };  
  251.                 d.removeQueueItem = function(m, l, k) {  
  252.                     if (!k) {  
  253.                         k = 0;  
  254.                     }  
  255.                     var j = l ? 0 : 500;  
  256.                     if (m.queueItem) {  
  257.                         if (m.queueItem.find(".fileinfo").html() != " - 上传成功") {  
  258.                             m.queueItem.find(".fileinfo").html(" - Cancelled");  
  259.                         }  
  260.                         m.queueItem.find(".progress-bar").width(0);  
  261.                         m.queueItem.delay(k).fadeOut(j,  
  262.                         function() {  
  263.                             b(this).remove();  
  264.                         });  
  265.                         delete m.queueItem;  
  266.                         d.queue.count--;  
  267.                     }  
  268.                 };  
  269.                 d.filesToUpload = function() {  
  270.                     var k = 0;  
  271.                     for (var j in d.inputs) {  
  272.                         input = d.inputs[j];  
  273.                         limit = input.files.length;  
  274.                         for (var l = 0; l < limit; l++) {  
  275.                             file = input.files[l];  
  276.                             if (!file.skip && !file.complete) {  
  277.                                 k++;  
  278.                             }  
  279.                         }  
  280.                     }  
  281.                     return k;  
  282.                 };  
  283.                 d.checkExists = function(k) {  
  284.                     if (b.inArray("onCheck", f.overrideEvents) < 0) {  
  285.                         b.ajaxSetup({  
  286.                             async: false  
  287.                         });  
  288.                         var j = b.extend(f.formData, {  
  289.                             filename: k.name  
  290.                         });  
  291.                         b.post(f.checkScript, j,  
  292.                         function(l) {  
  293.                             k.exists = parseInt(l);  
  294.                         });  
  295.                         if (k.exists) {  
  296.                             if (!confirm("A file named " + k.name + " already exists in the upload folder.\nWould you like to replace it?")) {  
  297.                                 a.cancel.call(g, k);  
  298.                                 return true;  
  299.                             }  
  300.                         }  
  301.                     }  
  302.                     if (typeof f.onCheck === "function") {  
  303.                         f.onCheck.call(g, k, k.exists);  
  304.                     }  
  305.                     return false;  
  306.                 };  
  307.                 d.uploadFile = function(k, l) {  
  308.                     if (!k.skip && !k.complete && !k.uploading) {  
  309.                         k.uploading = true;  
  310.                         d.uploads.current++;  
  311.                         d.uploads.attempted++;  
  312.                         xhr = k.xhr = new XMLHttpRequest();  
  313.                         if (typeof FormData === "function" || typeof FormData === "object") {  
  314.                             var m = new FormData();  
  315.                             m.append(f.fileObjName, k);  
  316.                             for (i in f.formData) {  
  317.                                 m.append(i, f.formData[i]);  
  318.                             }  
  319.                             xhr.open(f.method, f.uploadScript, true);  
  320.                             xhr.upload.addEventListener("progress",  
  321.                             function(n) {  
  322.                                 if (n.lengthComputable) {  
  323.                                     d.progress(n, k);  
  324.                                 }  
  325.                             },  
  326.                             false);  
  327.                             xhr.addEventListener("load",  
  328.                             function(n) {  
  329.                                 if (this.readyState == 4) {  
  330.                                     k.uploading = false;  
  331.                                     if (this.status == 200) {  
  332.                                         if (k.xhr.responseText !== "Invalid file type.") {  
  333.                                             d.uploadComplete(n, k, l);  
  334.                                         } else {  
  335.                                             d.error(k.xhr.responseText, k, l);  
  336.                                         }  
  337.                                     } else {  
  338.                                         if (this.status == 404) {  
  339.                                             d.error("404_FILE_NOT_FOUND", k, l);  
  340.                                         } else {  
  341.                                             if (this.status == 403) {  
  342.                                                 d.error("403_FORBIDDEN", k, l);  
  343.                                             } else {  
  344.                                                 d.error("Unknown Error", k, l);  
  345.                                             }  
  346.                                         }  
  347.                                     }  
  348.                                 }  
  349.                             });  
  350.                             xhr.send(m);  
  351.                         } else {  
  352.                             var j = new FileReader();  
  353.                             j.onload = function(q) {  
  354.                                 var t = "-------------------------" + (new Date).getTime(),  
  355.                                 p = "--",  
  356.                                 o = "\r\n",  
  357.                                 s = "";  
  358.                                 s += p + t + o;  
  359.                                 s += 'Content-Disposition: form-data; name="' + f.fileObjName + '"';  
  360.                                 if (k.name) {  
  361.                                     s += '; filename="' + k.name + '"';  
  362.                                 }  
  363.                                 s += o;  
  364.                                 s += "Content-Type: application/octet-stream" + o + o;  
  365.                                 s += q.target.result + o;  
  366.                                 for (key in f.formData) {  
  367.                                     s += p + t + o;  
  368.                                     s += 'Content-Disposition: form-data; name="' + key + '"' + o + o;  
  369.                                     s += f.formData[key] + o;  
  370.                                 }  
  371.                                 s += p + t + p + o;  
  372.                                 xhr.upload.addEventListener("progress",  
  373.                                 function(u) {  
  374.                                     d.progress(u, k);  
  375.                                 },  
  376.                                 false);  
  377.                                 xhr.addEventListener("load",  
  378.                                 function(v) {  
  379.                                     k.uploading = false;  
  380.                                     var u = this.status;  
  381.                                     if (u == 404) {  
  382.                                         d.error("404_FILE_NOT_FOUND", k, l);  
  383.                                     } else {  
  384.                                         if (k.xhr.responseText != "Invalid file type.") {  
  385.                                             d.uploadComplete(v, k, l);  
  386.                                         } else {  
  387.                                             d.error(k.xhr.responseText, k, l);  
  388.                                         }  
  389.                                     }  
  390.                                 },  
  391.                                 false);  
  392.                                 var n = f.uploadScript;  
  393.                                 if (f.method == "get") {  
  394.                                     var r = b(f.formData).param();  
  395.                                     n += r;  
  396.                                 }  
  397.                                 xhr.open(f.method, f.uploadScript, true);  
  398.                                 xhr.setRequestHeader("Content-Type""multipart/form-data; boundary=" + t);  
  399.                                 if (typeof f.onUploadFile === "function") {  
  400.                                     f.onUploadFile.call(g, k);  
  401.                                 }  
  402.                                 xhr.sendAsBinary(s);  
  403.                             };  
  404.                             j.readAsBinaryString(k);  
  405.                         }  
  406.                     }  
  407.                 };  
  408.                 d.progress = function(l, j) {  
  409.                     if (b.inArray("onProgress", f.overrideEvents) < 0) {  
  410.                         if (l.lengthComputable) {  
  411.                             var k = Math.round((l.loaded / l.total) * 100);  
  412.                         }  
  413.                         j.queueItem.find(".fileinfo").html(" - " + k + "%");  
  414.                         j.queueItem.find(".progress-bar").css("width", k + "%");  
  415.                     }  
  416.                     if (typeof f.onProgress === "function") {  
  417.                         f.onProgress.call(g, j, l);  
  418.                     }  
  419.                 };  
  420.                 d.error = function(l, j, k) {  
  421.                     if (b.inArray("onError", f.overrideEvents) < 0) {  
  422.                         switch (l) {  
  423.                         case "404_FILE_NOT_FOUND":  
  424.                             errorMsg = "404 Error";  
  425.                             break;  
  426.                         case "403_FORBIDDEN":  
  427.                             errorMsg = "403 Forbidden";  
  428.                             break;  
  429.                         case "FORBIDDEN_FILE_TYPE":  
  430.                             errorMsg = "Forbidden File Type";  
  431.                             break;  
  432.                         case "FILE_SIZE_LIMIT_EXCEEDED":  
  433.                             errorMsg = "图片已超出200K,请重新上传!";  
  434.                             break;  
  435.                         default:  
  436.                             errorMsg = "Unknown Error";  
  437.                             break;  
  438.                         }  
  439.                         j.queueItem.addClass("error").find(".fileinfo").html(" - " + errorMsg);  
  440.                         j.queueItem.find(".progress").remove();  
  441.                     }  
  442.                     if (typeof f.onError === "function") {  
  443.                         f.onError.call(g, l, j);  
  444.                     }  
  445.                     j.skip = true;  
  446.                     if (l == "404_FILE_NOT_FOUND") {  
  447.                         d.uploads.errors++;  
  448.                     } else {  
  449.                         d.queue.errors++;  
  450.                     }  
  451.                     if (k) {  
  452.                         a.upload.call(g, nulltrue);  
  453.                     }  
  454.                 };  
  455.                 d.uploadComplete = function(l, j, k) {  
  456.                     if (b.inArray("onUploadComplete", f.overrideEvents) < 0) {  
  457.                         j.queueItem.find(".progress-bar").css("width""100%");  
  458.                         j.queueItem.find(".fileinfo").html(" - 上传成功");  
  459.                         j.queueItem.find(".progress").slideUp(250);  
  460.                         j.queueItem.addClass("complete");  
  461.                     }  
  462.                     if (typeof f.onUploadComplete === "function") {  
  463.                         f.onUploadComplete.call(g, j, j.xhr.responseText);  
  464.                     }  
  465.                     if (f.removeCompleted) {  
  466.                         setTimeout(function() {  
  467.                             a.cancel.call(g, j);  
  468.                         },  
  469.                         3000);  
  470.                     }  
  471.                     j.complete = true;  
  472.                     d.uploads.successful++;  
  473.                     d.uploads.count++;  
  474.                     d.uploads.current--;  
  475.                     delete j.xhr;  
  476.                     if (k) {  
  477.                         a.upload.call(g, nulltrue);  
  478.                     }  
  479.                 };  
  480.                 d.queueComplete = function() {  
  481.                     if (typeof f.onQueueComplete === "function") {  
  482.                         f.onQueueComplete.call(g, d.uploads);  
  483.                     }  
  484.                 };  
  485.                 if (window.File && window.FileList && window.Blob && (window.FileReader || window.FormData)) {  
  486.                     f.id = "uploadifive-" + g.attr("id");  
  487.                     d.button = b('<div id="' + f.id + '" class="uploadifive-button">' + f.buttonText + "</div>");  
  488.                     if (f.buttonClass) {  
  489.                         d.button.addClass(f.buttonClass);  
  490.                     }  
  491.                     d.button.css({  
  492.                         height: f.height,  
  493.                         "line-height": f.height + "px",  
  494.                         overflow: "hidden",  
  495.                         position: "relative",  
  496.                         "text-align""center",  
  497.                         width: f.width  
  498.                     });  
  499.                     g.before(d.button).appendTo(d.button).hide();  
  500.                     d.createInput.call(g);  
  501.                     if (!f.queueID) {  
  502.                         f.queueID = f.id + "-queue";  
  503.                         d.queueEl = b('<div id="' + f.queueID + '" class="uploadifive-queue" />');  
  504.                         d.button.after(d.queueEl);  
  505.                     } else {  
  506.                         d.queueEl = b("#" + f.queueID);  
  507.                     }  
  508.                     if (f.dnd) {  
  509.                         var h = f.dropTarget ? b(f.dropTarget) : d.queueEl.get(0);  
  510.                         h.addEventListener("dragleave",  
  511.                         function(j) {  
  512.                             j.preventDefault();  
  513.                             j.stopPropagation();  
  514.                         },  
  515.                         false);  
  516.                         h.addEventListener("dragenter",  
  517.                         function(j) {  
  518.                             j.preventDefault();  
  519.                             j.stopPropagation();  
  520.                         },  
  521.                         false);  
  522.                         h.addEventListener("dragover",  
  523.                         function(j) {  
  524.                             j.preventDefault();  
  525.                             j.stopPropagation();  
  526.                         },  
  527.                         false);  
  528.                         h.addEventListener("drop", d.drop, false);  
  529.                     }  
  530.                     if (!XMLHttpRequest.prototype.sendAsBinary) {  
  531.                         XMLHttpRequest.prototype.sendAsBinary = function(k) {  
  532.                             function l(n) {  
  533.                                 return n.charCodeAt(0) & 255;  
  534.                             }  
  535.                             var m = Array.prototype.map.call(k, l);  
  536.                             var j = new Uint8Array(m);  
  537.                             this.send(j.buffer);  
  538.                         };  
  539.                     }  
  540.                     if (typeof f.onInit === "function") {  
  541.                         f.onInit.call(g);  
  542.                     }  
  543.                 } else {  
  544.                     if (typeof f.onFallback === "function") {  
  545.                         f.onFallback.call(g);  
  546.                     }  
  547.                     return false;  
  548.                 }  
  549.             });  
  550.         },  
  551.         debug: function() {  
  552.             return this.each(function() {  
  553.                 console.log(b(this).data("uploadifive"));  
  554.             });  
  555.         },  
  556.         clearQueue: function() {  
  557.             this.each(function() {  
  558.                 var f = b(this),  
  559.                 c = f.data("uploadifive"),  
  560.                 e = c.settings;  
  561.                 for (var d in c.inputs) {  
  562.                     input = c.inputs[d];  
  563.                     limit = input.files.length;  
  564.                     for (i = 0; i < limit; i++) {  
  565.                         file = input.files[i];  
  566.                         a.cancel.call(f, file);  
  567.                     }  
  568.                 }  
  569.                 if (typeof e.onClearQueue === "function") {  
  570.                     e.onClearQueue.call(f, b("#" + c.settings.queueID));  
  571.                 }  
  572.             });  
  573.         },  
  574.         cancel: function(d, c) {  
  575.             this.each(function() {  
  576.                 var g = b(this),  
  577.                 e = g.data("uploadifive"),  
  578.                 f = e.settings;  
  579.                 if (typeof d === "string") {  
  580.                     if (!isNaN(d)) {  
  581.                         fileID = "uploadifive-" + b(this).attr("id") + "-file-" + d;  
  582.                     }  
  583.                     d = b("#" + fileID).data("file");  
  584.                 }  
  585.                 d.skip = true;  
  586.                 e.filesCancelled++;  
  587.                 if (d.uploading) {  
  588.                     e.uploads.current--;  
  589.                     d.uploading = false;  
  590.                     d.xhr.abort();  
  591.                     delete d.xhr;  
  592.                     a.upload.call(g);  
  593.                 }  
  594.                 if (b.inArray("onCancel", f.overrideEvents) < 0) {  
  595.                     e.removeQueueItem(d, c);  
  596.                 }  
  597.                 if (typeof f.onCancel === "function") {  
  598.                     f.onCancel.call(g, d);  
  599.                 }  
  600.             });  
  601.         },  
  602.         upload: function(c, d) {  
  603.             this.each(function() {  
  604.                 var h = b(this),  
  605.                 e = h.data("uploadifive"),  
  606.                 f = e.settings;  
  607.                 if (c) {  
  608.                     e.uploadFile.call(h, c);  
  609.                 } else {  
  610.                     if ((e.uploads.count + e.uploads.current) < f.uploadLimit || f.uploadLimit == 0) {  
  611.                         if (!d) {  
  612.                             e.uploads.attempted = 0;  
  613.                             e.uploads.successsful = 0;  
  614.                             e.uploads.errors = 0;  
  615.                             var g = e.filesToUpload();  
  616.                             if (typeof f.onUpload === "function") {  
  617.                                 f.onUpload.call(h, g);  
  618.                             }  
  619.                         }  
  620.                         b("#" + f.queueID).find(".uploadifive-queue-item").not(".error, .complete").each(function() {  
  621.                             _file = b(this).data("file");  
  622.                             if ((e.uploads.current >= f.simUploadLimit && f.simUploadLimit !== 0) || (e.uploads.current >= f.uploadLimit && f.uploadLimit !== 0) || (e.uploads.count >= f.uploadLimit && f.uploadLimit !== 0)) {  
  623.                                 return false;  
  624.                             }  
  625.                             if (f.checkScript) {  
  626.                                 _file.checking = true;  
  627.                                 skipFile = e.checkExists(_file);  
  628.                                 _file.checking = false;  
  629.                                 if (!skipFile) {  
  630.                                     e.uploadFile(_file, true);  
  631.                                 }  
  632.                             } else {  
  633.                                 e.uploadFile(_file, true);  
  634.                             }  
  635.                         });  
  636.                         if (b("#" + f.queueID).find(".uploadifive-queue-item").not(".error, .complete").size() == 0) {  
  637.                             e.queueComplete();  
  638.                         }  
  639.                     } else {  
  640.                         if (e.uploads.current == 0) {  
  641.                             if (b.inArray("onError", f.overrideEvents) < 0) {  
  642.                                 if (e.filesToUpload() > 0 && f.uploadLimit != 0) {  
  643.                                     alert("The maximum upload limit has been reached.");  
  644.                                 }  
  645.                             }  
  646.                             if (typeof f.onError === "function") {  
  647.                                 f.onError.call(h, "UPLOAD_LIMIT_EXCEEDED", e.filesToUpload());  
  648.                             }  
  649.                         }  
  650.                     }  
  651.                 }  
  652.             });  
  653.         },  
  654.         destroy: function() {  
  655.             this.each(function() {  
  656.                 var e = b(this),  
  657.                 c = e.data("uploadifive"),  
  658.                 d = c.settings;  
  659.                 a.clearQueue.call(e);  
  660.                 if (!d.queueID) {  
  661.                     b("#" + d.queueID).remove();  
  662.                 }  
  663.                 e.siblings("input").remove();  
  664.                 e.show().insertBefore(c.button);  
  665.                 c.button.remove();  
  666.                 if (typeof d.onDestroy === "function") {  
  667.                     d.onDestroy.call(e);  
  668.                 }  
  669.             });  
  670.         }  
  671.     };  
  672.     b.fn.uploadifive = function(c) {  
  673.         if (a[c]) {  
  674.             return a[c].apply(this, Array.prototype.slice.call(arguments, 1));  
  675.         } else {  
  676.             if (typeof c === "object" || !c) {  
  677.                 return a.init.apply(this, arguments);  
  678.             } else {  
  679.                 b.error("The method " + c + " does not exist in $.uploadify");  
  680.             }  
  681.         }  
  682.     };  
  683. })(jQuery);  
[vb]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <script type="text/javascript">  
  2.         <%  
  3.         randomize  
  4.         ranNum=int(90000*rnd)+10000  
  5.         %>  
  6.         $(function() {  
  7.             $('#file_upload').uploadifive({  
  8.                 'auto'             : true,  
  9.                 'multi'            : false,  
  10.                 'buttonText'       :'选择图片',  
  11.                 'removeCompleted'  : true,  
  12.                 'fileSizeLimit'    : '200KB',  
  13.                 'formData'         : {  
  14.                                        'timestamp' : '<%= ranNum %>',  
  15.                                        'token'     : '<%= md5("unique_salt"&ranNum)%>'  
  16.                                      },  
  17.                 'queueID'          : 'queue',  
  18.                 'uploadScript'     : 'uploadifive.asp',  
  19.                 'onUploadComplete' : function(file, data) {var obj=JSON.parse(data); $('.filename').val(obj.filename);}  
  20.             });  
  21.         });  
  22.     </script>  

仅供参考
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值