This forum is a community forum meant for users of the plugin to collaborate and help solve issues with implementation, etc. Unfortunately, as the creator of the plugin, I do not have much time to attend to every request here as this is only a side project and I must work a full-time job to provide for my family. This is how I keep the Flash version free and the HTML5 version low cost.
UploadiFive 1.1.1 has been released which includes a small fix for added support on touch devices including iOS 6 devices.
Checking if files in Queue
  • *Changed the title to make a little more sense*

    First of all, great script!

    I was hoping someone could help me figure out how to check whether or not there are files in the queue. File uploads are optional on the form I'm using, and I'd like to redirect the user to another page even if there are NOT any files to upload. I can easily redirect a user when they add files to upload by using the onAllComplete function, but I can't figure out how to do it when there are NOT any files to upload. Any help would be appreciated.
  • Uploadify doesn't have a function to return the queue size, but you can keep track of it with an answer I posted In the old forum for Terry:

    fileUploadStart() isn't set up so that it can be overriden. So here's what you need
    <script type=\"text/javascript\">
    var queueSize = 0;

    function startUpload(id){
    if (queueSize == 0)
    //insert your form submit function call here
    alert(\"Nothing in the queue\");
    $('#'+id).fileUploadStart();
    }
    </script>
    <script type=\"text/javascript\">
    $(\"#fileUpload\").fileUpload({
    .......
    onCancel: function (a, b, c, d) {
    queueSize = d.fileCount;
    },
    onClearQueue: function (a, b) {
    queueSize = b.fileCount;
    },
    onSelectOnce: function (a, b) {
    queueSize = b.fileCount;
    },
    onAllComplete: function () {
    // your form function call here
    alert(\"submitting form\");
    queueSize = 0;
    },
    onComplete: function (a, b ,c, d, e) {
    queueSize--;
    },
    });
    </script>

    then in you html dont call $('#fileUpload').fileUploadStart() but call
    startUpload('fileUpload')
  • Thank you for your reply! I'll give it a shot later tonight.
  • I just wanted to confirm that this worked perfectly. Thanks again for your help!
  • Hi Travis, thanks for your code. I am having trouble when useres select a bunch of files. It seams that some fail due to too much data being uploaded at once, Im wondering if there is a way to limit the number of bytes selected.

    Here I see you limit the fileCount queue, what about popping up an error message when the number of bytes selected is too high?

    TravisN. said:
    Uploadify doesn't have a function to return the queue size, but you can keep track of it with an answer I posted In the old forum for Terry:

    fileUploadStart() isn't set up so that it can be overriden. So here's what you need
    <script type=\"text/javascript\">
    var queueSize = 0;

    function startUpload(id){
    if (queueSize == 0)
    //insert your form submit function call here
    alert(\"Nothing in the queue\");
    $('#'+id).fileUploadStart();
    }
    </script>
    <script type=\"text/javascript\">
    $(\"#fileUpload\").fileUpload({
    .......
    onCancel: function (a, b, c, d) {
    queueSize = d.fileCount;
    },
    onClearQueue: function (a, b) {
    queueSize = b.fileCount;
    },
    onSelectOnce: function (a, b) {
    queueSize = b.fileCount;
    },
    onAllComplete: function () {
    // your form function call here
    alert(\"submitting form\");
    queueSize = 0;
    },
    onComplete: function (a, b ,c, d, e) {
    queueSize--;
    },
    });
    </script>

    then in you html dont call $('#fileUpload').fileUploadStart() but call
    startUpload('fileUpload')
  • Use the onSelect function. It returns the size of the file selected.
  • Hello,

    I implemented the upload limit functionality in JS, adding the customization of erros messages.


    $(document).ready(function() {
    $('#fileInput').fileUpload ({
    'uploader' : 'uploader.swf',
    'script' : 'upload.php',
    'cancelImg' : 'cancel.png',
    'auto' : true,
    'folder' : '/uploads',
    'maxQueueSize': 3,
    messages :{
    'maxNumberUploadError':'Exceded number of upload.',
    'nothingInTheQueueError':'Nothing in the Queue'
    }
    });
    });


    The script:


    /*
    Uploadify v1.6.2
    Copyright (C) 2009 by Ronnie Garcia
    Co-developed by Travis Nickels

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program. If not, see <http://www.gnu.org/licenses/>.
    */

    var flashVer = -1;
    if (navigator.plugins != null &amp;&amp; navigator.plugins.length > 0) {
    if (navigator.plugins[\"Shockwave Flash 2.0\"] || navigator.plugins[\"Shockwave Flash\"]) {
    var swVer2 = navigator.plugins[\"Shockwave Flash 2.0\"] ? \" 2.0\" : \"\";
    var flashDescription = navigator.plugins[\"Shockwave Flash\" + swVer2].description;
    var descArray = flashDescription.split(\" \");
    var tempArrayMajor = descArray[2].split(\".\");
    var versionMajor = tempArrayMajor[0];
    var versionMinor = tempArrayMajor[1];
    var versionRevision = descArray[3];
    if (versionRevision == \"\") {
    versionRevision = descArray[4];
    }
    if (versionRevision[0] == \"d\") {
    versionRevision = versionRevision.substring(1);
    } else if (versionRevision[0] == \"r\") {
    ersionRevision = versionRevision.substring(1);
    if (versionRevision.indexOf(\"d\") > 0) {
    versionRevision = versionRevision.substring(0, versionRevision.indexOf(\"d\"));
    }
    }
    var flashVer = versionMajor + \".\" + versionMinor + \".\" + versionRevision;
    }
    } else if ( $.browser.msie ) {
    var version;
    var axo;
    var e;
    try {
    axo = new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash.7\");
    version = axo.GetVariable(\"$version\");
    } catch (e) {
    }
    flashVer = version.replace(\"WIN \",\"\").replace(\",\",\".\");
    }
    flashVer = flashVer.split(\".\")[0];

    if(jQuery)(
    function($){
    $.extend($.fn,{
    fileUpload:function(options) {
    if (flashVer >= 9) {
    $(this).each(function(){
    settings = $.extend({
    uploader: 'uploader.swf',
    script: 'uploader.php',
    folder: '',
    height: 30,
    width: 110,
    cancelImg: 'cancel.png',
    wmode: 'opaque',
    scriptAccess: 'sameDomain',
    fileDataName: 'Filedata',
    displayData: 'percentage',
    onInit: function() {},
    onSelect: function() {},
    onCheck: function() {},
    onCancel: function() {},
    onError: function() {},
    onProgress: function() {},
    onComplete: function() {},
    queueSize: 0,
    maxQueueSize: 10,
    messages: {
    'maxNumberUploadError':'Exceded number of upload. Max number of uploads: '+ options.maxQueueSize,
    'nothingInTheQueueError':'Nothing in the Queue',
    'File Size':'File size exceeded',
    }
    }, options);
    var pagePath = location.pathname;
    pagePath = pagePath.split('/');
    pagePath.pop();
    pagePath = pagePath.join('/') + '/';
    var data = '&amp;pagepath=' + pagePath;
    if (settings.buttonImg) data += '&amp;buttonImg=' + escape(settings.buttonImg);
    if (settings.buttonText) data += '&amp;buttonText=' + escape(settings.buttonText);
    if (settings.rollover) data += '&amp;rollover=true';
    data += '&amp;script=' + settings.script;
    data += '&amp;folder=' + escape(settings.folder);
    if (settings.scriptData) {
    var scriptDataString = '';
    for (var name in settings.scriptData) {
    scriptDataString += '&amp;' + name + '=' + settings.scriptData[name];
    }
    data += '&amp;scriptData=' + escape(scriptDataString);
    }
    data += '&amp;btnWidth=' + settings.width;
    data += '&amp;btnHeight=' + settings.height;
    data += '&amp;wmode=' + settings.wmode;
    if (settings.hideButton) data += '&amp;hideButton=true';
    if (settings.fileDesc) data += '&amp;fileDesc=' + settings.fileDesc + '&amp;fileExt=' + settings.fileExt;
    if (settings.multi) data += '&amp;multi=true';
    if (settings.auto) data += '&amp;auto=true';
    if (settings.sizeLimit) data += '&amp;sizeLimit=' + settings.sizeLimit;
    if (settings.simUploadLimit) data += '&amp;simUploadLimit=' + settings.simUploadLimit;
    if (settings.checkScript) data += '&amp;checkScript=' + settings.checkScript;
    if (settings.fileDataName) data += '&amp;fileDataName=' + settings.fileDataName;
    if ($.browser.msie) {
    flashElement = '<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\"' + settings.width + '\" height=\"' + settings.height + '\" id=\"' + $(this).attr(\"id\") + 'Uploader\" class=\"fileUploaderBtn\">\
    <param name=\"movie\" value=\"' + settings.uploader + '?fileUploadID=' + $(this).attr(\"id\") + data + '\" />\
    <param name=\"quality\" value=\"high\" />\
    <param name=\"wmode\" value=\"' + settings.wmode + '\" />\
    <param name=\"allowScriptAccess\" value=\"' + settings.scriptAccess + '\">\
    <param name=\"swfversion\" value=\"9.0.0.0\" />\
    </object>';
    } else {
    flashElement = '<embed src=\"' + settings.uploader + '?fileUploadID=' + $(this).attr(\"id\") + data + '\" quality=\"high\" width=\"' + settings.width + '\" height=\"' + settings.height + '\" id=\"' + $(this).attr(\"id\") + 'Uploader\" class=\"fileUploaderBtn\" name=\"' + $(this).attr(\"id\") + 'Uploader\" allowScriptAccess=\"' + settings.scriptAccess + '\" wmode=\"' + settings.wmode + '\" type=\"application/x-shockwave-flash\" />';
    }
    if (settings.onInit() !== false) {
    $(this).css('display','none');
    if ($.browser.msie) {
    $(this).after('<div id=\"' + $(this).attr(\"id\") + 'Uploader\"></div>');
    document.getElementById($(this).attr(\"id\") + 'Uploader').outerHTML = flashElement;
    } else {
    $(this).after(flashElement);
    }
    $(\"#\" + $(this).attr('id') + \"Uploader\").after('<div id=\"' + $(this).attr('id') + 'Queue\" class=\"fileUploadQueue\"></div>');
    }
    $(this).bind(\"rfuSelect\", {'action': settings.onSelect}, function(event, queueID, fileObj) {


    if (event.data.action(event, queueID, fileObj) !== false) {

    // TEST THE QUEUE SIZE
    if (settings.queueSize < settings.maxQueueSize || settings.multi == false ){
    settings.queueSize++;
    } else {
    alert( settings.messages.maxNumberUploadError );
    return false;
    }

    var byteSize = Math.round(fileObj.size / 1024 * 100) * .01;
    var suffix = 'KB';
    if (byteSize > 1000) {
    byteSize = Math.round(byteSize *.001 * 100) * .01;
    suffix = 'MB';
    }
    var sizeParts = byteSize.toString().split('.');
    if (sizeParts.length > 1) {
    byteSize = sizeParts[0] + '.' + sizeParts[1].substr(0,2);
    } else {
    byteSize = sizeParts[0];
    }
    if (fileObj.name.length > 20) {
    fileName = fileObj.name.substr(0,20) + '...';
    } else {
    fileName = fileObj.name;
    }
    $('#' + $(this).attr('id') + 'Queue').append('<div id=\"' + $(this).attr('id') + queueID + '\" class=\"fileUploadQueueItem\">\
    <div class=\"cancel\">\
    <a href=\"javascript:$(\'#' + $(this).attr('id') + '\').fileUploadCancel(\'' + queueID + '\')\"><img src=\"' + settings.cancelImg + '\" border=\"0\" /></a>\
    </div>\
    <span class=\"fileName\">' + fileName + ' (' + byteSize + suffix + ')</span><span class=\"percentage\">&amp;nbsp;</span>\
    <div class=\"fileUploadProgress\" style=\"width: 100%;\">\
    <div id=\"' + $(this).attr('id') + queueID + 'ProgressBar\" class=\"fileUploadProgressBar\" style=\"width: 1px; height: 3px;\"></div>\
    </div>\
    </div>');
    }
    });
    /*
    if (typeof(settings.onSelectOnce) == 'function') {
    $(this).bind(\"rfuSelectOnce\", settings.onSelectOnce);
    } */
    $(this).bind(\"rfuSelectOnce\", {'action': settings.onSelectOnce}, function(event, data) {
    if (event.data.action(event, data) !== false) {
    // UPDATE QUEUE
    if( settings.multi == true )
    settings.queueSize = data.fileCount;
    }
    });
    $(this).bind(\"rfuCheckExist\", {'action': settings.onCheck}, function(event, checkScript, fileQueue, folder, single) {
    var postData = new Object();
    postData.folder = pagePath + folder;
    for (var queueID in fileQueue) {
    postData[queueID] = fileQueue[queueID];
    if (single) {
    var singleFileID = queueID;
    }
    }
    $.post(checkScript, postData, function(data) {
    for(var key in data) {
    if (event.data.action(event, checkScript, fileQueue, folder, single) !== false) {
    var replaceFile = confirm('Do you want to replace the file \'' + data[key] + '\'?');
    if (!replaceFile) {
    document.getElementById($(event.target).attr('id') + 'Uploader').cancelFileUpload(key);
    }
    }
    }
    if (single) {
    document.getElementById($(event.target).attr('id') + 'Uploader').startFileUpload(singleFileID, true);
    } else {
    document.getElementById($(event.target).attr('id') + 'Uploader').startFileUpload(null, true);
    }
    }, \"json\");
    });
    $(this).bind(\"rfuCancel\", {'action': settings.onCancel}, function(event, queueID, fileObj, data) {
    if (event.data.action(event, queueID, fileObj, data) !== false) {
    // UPDATE QUEUE
    if( settings.multi == true )
    settings.queueSize = data.fileCount;

    $(\"#\" + $(this).attr('id') + queueID).fadeOut(250, function() { $(\"#\" + $(this).attr('id') + queueID).remove()});
    }
    });
    $(this).bind(\"rfuClearQueue\", {'action': settings.onClearQueue}, function() {
    if (event.data.action() !== false) {
    // UPDATE QUEUE SITE
    if( settings.multi == true )
    settings.queueSize = data.fileCount;

    $('#' + $(this).attr('id') + 'Queue').contents().fadeOut(250, function() {$('#' + $(this).attr('id') + 'Queue').empty()});
    }
    });
    $(this).bind(\"rfuError\", {'action': settings.onError}, function(event, queueID, fileObj, errorObj) {
    if (event.data.action(event, queueID, fileObj, errorObj) !== false) {

    alert( errorObj.type );

    var type = (errorObj.type).toString();

    //TODO - IMPLEMENTS ALL ERROR MESSAGE TO CUSTOM
    message = settings.messages[type];

    if( ! message )
    message = errorObj.type + \" Error - \" + fileObj.name;


    $(\"#\" + $(this).attr('id') + queueID + \" .fileName\").text( message );
    $(\"#\" + $(this).attr('id') + queueID).css({'border': '3px solid #FBCBBC', 'background-color': '#FDE5DD'});
    }
    });
    $(this).bind(\"rfuProgress\", {'action': settings.onProgress, 'toDisplay': settings.displayData}, function(event, queueID, fileObj, data) {
    if (event.data.action(event, queueID, fileObj, data) !== false) {
    $(\"#\" + $(this).attr('id') + queueID + \"ProgressBar\").css('width', data.percentage + '%');
    if (event.data.toDisplay == 'percentage') displayData = ' - ' + data.percentage + '%';
    if (event.data.toDisplay == 'speed') displayData = ' - ' + data.speed + 'KB/s';
    if (event.data.toDisplay == null) displayData = ' ';
    $(\"#\" + $(this).attr('id') + queueID + \" .percentage\").text(displayData);
    }
    });
    $(this).bind(\"rfuComplete\", {'action': settings.onComplete}, function(event, queueID, fileObj, response, data) {
    if (event.data.action(event, queueID, fileObj, unescape(response), data) !== false) {

    //DECREMENT QUEUE
    if( settings.multi == true )
    settings.queueSize--;

    $(\"#\" + $(this).attr('id') + queueID).fadeOut(250, function() { $(\"#\" + $(this).attr('id') + queueID).remove()});
    $(\"#\" + $(this).attr('id') + queueID + \" .percentage\").text(' - Completed');
    }
    });
    $(this).bind(\"rfuAllComplete\", {'action': settings.onComplete}, function(event, data) {
    if (event.data.action(event, data) !== false) {
    //CLEAR QUEUE
    if( settings.multi == true )
    settings.queueSize = 0;
    }
    });
    /*
    if (typeof(settings.onAllComplete) == 'function') {
    $(this).bind(\"rfuAllComplete\", settings.onAllComplete);
    } */
    });
    }
    },
    fileUploadSettings:function(settingName, settingValue) {
    $(this).each(function() {
    document.getElementById($(this).attr('id') + 'Uploader').updateSettings(settingName,settingValue);
    });
    },
    fileUploadStart:function(queueID) {
    if (settings.queueSize == 0)
    alert( settings.messages.nothingInTheQueueError );

    $(this).each(function() {
    document.getElementById($(this).attr('id') + 'Uploader').startFileUpload(queueID, false);
    });
    },
    fileUploadCancel:function(queueID) {
    $(this).each(function() {
    document.getElementById($(this).attr('id') + 'Uploader').cancelFileUpload(queueID);
    });
    },
    fileUploadClearQueue:function() {
    $(this).each(function() {
    document.getElementById($(this).attr('id') + 'Uploader').clearFileUploadQueue();
    });
    }
    })
    })(jQuery);
  • How might I go about triggering the startUpload function (that you've supplied below) when I'm using 'auto':true to start the upload automatically? Is there a way to override the function that gets called via the auto start?

    TravisN. said:
    Uploadify doesn't have a function to return the queue size, but you can keep track of it with an answer I posted In the old forum for Terry:

    fileUploadStart() isn't set up so that it can be overriden. So here's what you need
    <script type=\"text/javascript\">
    var queueSize = 0;

    function startUpload(id){
    if (queueSize == 0)
    //insert your form submit function call here
    alert(\"Nothing in the queue\");
    $('#'+id).fileUploadStart();
    }
    </script>
    <script type=\"text/javascript\">
    $(\"#fileUpload\").fileUpload({
    .......
    onCancel: function (a, b, c, d) {
    queueSize = d.fileCount;
    },
    onClearQueue: function (a, b) {
    queueSize = b.fileCount;
    },
    onSelectOnce: function (a, b) {
    queueSize = b.fileCount;
    },
    onAllComplete: function () {
    // your form function call here
    alert(\"submitting form\");
    queueSize = 0;
    },
    onComplete: function (a, b ,c, d, e) {
    queueSize--;
    },
    });
    </script>

    then in you html dont call $('#fileUpload').fileUploadStart() but call
    startUpload('fileUpload')
  • set auto to false and then call startUpload in onSelectOnce
  • A really simple way to check the queue length is to just count the divs with class fileName. e.g. my file form object has id immediate_deal_image so $('#immediate_deal_imageQueue').find('.fileName').length

  • If the United States Obtained create each efforts pertaining to Libya from the start . jordan shoes

    At Outdated Banyan: Media: air jordansAbout Libya, presenting Just one foreigner's attention. This is usually a Republican Senator along with past presidential prospect Steve McCain. Air Jordan ShoesHe said this morning inside of a tv program once more questioned this You.Ohydrates. federal to boost armed forces crackdown. Michael jordan shoes]He asserted that should the America to undertake from the beginning, "This point (Gaddafi's resignation) has been able to uncover.Inch outlet shoesHe offers combined a couple parties' users so that you can enquired your Oughout.Utes. to accentuate the crackdown unveiled from the expenses. Air Jordan Shoes
    expecting a long time,it is not the sin,however contemplate,does your prick of conscience cousons a person.


    tags:
    jordan shoes
    air jordans
    Air Jordan Shoes
    Michael jordan shoes
    outlet shoes
    Air Jordan Shoes