2011-10-06 9 views
6

Tengo un formulario de carga con plupload y una casilla de verificación con valor booleano después de plupload div.Plupload, cambiar dinámicamente url

Quiero cambiar el valor de la url en plupload si la casilla de verificación está marcada.

Aquí está mi código

primera carga de la página tiempo
<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(); 
    } 
}); 

}); 

El valor de la variable url se define con valor compresa. Probé 1000 thinhs pero es imposible actualizar el valor de compresión en la url cuando cambian las casillas de verificación.

Espero que mi problema esté claro, no hablo inglés muy bien.

Gracias por la ayuda

Respuesta

22

Simplemente se unen al evento "BeforeUpload" y puede cambiar las uploader.settings para adaptarse a sus necesidades.

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

Gracias por su respuesta, estaba cuidando el "up.setting.url". Está bien ahora. – Hugo

+0

Creo que se supone que es 'uploader.settings.url' – vikki

+0

Tienes razón. Haré la edición. – funwhilelost

1

En plupolad v3 chaging settings.url no funcionará. Tienes que usar

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