2011-10-06 5 views
6

Mam formularz wysyłania z plupload i pole wyboru z wartością boolowską po zbiorze plupload div.Plupload, dynamicznie zmieniaj adres URL

Chcę zmienić wartość adresu URL w plupload, jeśli pole wyboru jest zaznaczone.

Oto mój kod

<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(); 
    } 
}); 

}); 

Wartość zmiennej URL jest definiowane jako pierwsze czas ładowania strony o wartości kompresji. Próbowałem 1000 thinhs, ale nie można odświeżyć wartości kompresji w url, gdy zmieni się pole wyboru.

Mam nadzieję, że mój problem jest jasny, nie mówię po angielsku bardzo dobrze.

Dzięki za pomoc

Odpowiedz

22

Wystarczy powiązać z „BeforeUpload” wydarzenie można zmienić uploader.settings do swoich potrzeb.

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

Dzięki za odpowiedź, szukałem po "up.setting.url". Teraz jest w porządku. – Hugo

+0

Myślę, że to ma być "uploader.settings.url" – vikki

+0

Masz rację. Dokonam edycji. – funwhilelost

1

W plupolad v3 chaging settings.url nie będzie działać. Musisz użyć

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