2011-10-06 8 views
6

Ho un modulo di upload con plupload e una casella di controllo con il valore booleano dopo il div plupload.Plupload, cambiare dinamicamente url

voglio cambiare il valore della URL nella plupload se la casella è selezionata.

Ecco il mio codice

<div id="uploader"> 
    <p>You browser doesn't have Flash, Silverlight, Gears, BrowserPlus or HTML5 support.</p> 
</div> 
<input id="compressFiles" type="checkbox" name="compressFiles" style="margin:10px 0 0 10px;" value="compress" checked="checked" /> 

$(function() { 

$("#compressFiles").change(function(){ 
    if($("#compressFiles").is(':checked')){ 
      compress = 'compress'; 
     } 
     else{ 
     compress = 'no'; 
     } 
}) 

$("#uploader").plupload({ 

    runtimes : 'gears,flash,html5,html4,browserplus,silverlight', 
    url: 'uploadHandler.php?compressFiles=' + compress, 
    max_file_size : '1000mb', 
    max_file_count: 20, // user can add no more then 20 files at a time 
    unique_names : true, 
    dragdrop : true, 
    multiple_queues : true, 

    // Addeb by LG - problem with FF 
    filters: [ 
     {title: "All", extensions: "*"} 
    ], 

    // Rename files by clicking on their titles 
    rename: true, 

    // Sort files 
    sortable: true, 

    // Flash settings 
    flash_swf_url : 'js/plupload.flash.swf', 

    // Silverlight settings 
    silverlight_xap_url : 'js/plupload.silverlight.xap', 
    init : { 
     FilesAdded: function(up) { 
      if($("#compressFiles").is(':checked')){ 
       compress = "no" 
      } 
      else{ 
       compress = "no" 
      } 
    } 
    } 

}); 

// Client side form validation 
$('form').submit(function(e) { 
    var uploader = $('#uploader').plupload('getUploader'); 

    // Validate number of uploaded files 
    if (uploader.total.uploaded == 0) { 
     // Files in queue upload them first 
     if (uploader.files.length > 0) { 
      // When all files are uploaded submit form 
      uploader.bind('UploadProgress', function() { 
       if (uploader.total.uploaded == uploader.files.length){ alert("coucou"); 
        $('form').submit();} 
      }); 

      uploader.start(); 
     } else 
      alert('You must at least upload one file.'); 

     e.preventDefault(); 
    } 
}); 

}); 

si definisce il valore della variabile URL prima di caricamento della pagina di tempo con il valore impacco. Ho provato 1000 thinhs ma impossibile aggiornare il valore di compressione nell'URL quando la casella di controllo cambia.

Spero che il mio problema è chiaro, non parlano inglese molto buono.

Grazie per l'aiuto

risposta

22

Semplicemente si legano alla manifestazione "BeforeUpload" ed è possibile modificare le uploader.settings base alle proprie esigenze.

this.uploader.bind('BeforeUpload', function(uploader, file) { 
    if($("#compressFiles").is(':checked')) { 
    uploader.settings.url = "uploadHandler.php?compressFiles=compress"; 
    } else { 
    uploader.settings.url = "uploadHandler.php?compressFiles=no"; 
    } 
}); 
+0

Grazie per la risposta, mi occupavo del "up.setting.url". Va tutto bene adesso – Hugo

+0

Penso suo supposto per essere 'uploader.settings.url' – vikki

+0

Hai ragione. Farò la modifica. – funwhilelost

1

In plupolad v3 chaing settings.url non funziona. Devi usare

uploader.setOption('url', 'your/url/here');