Plupload, динамически меняйте URL - PullRequest
6 голосов
/ 06 октября 2011

У меня есть форма загрузки с plupload и флажок с логическим значением после div plupload.

Я хочу изменить значение URL в plupload, если флажок установлен.

Вот мой код

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

});

Значение переменной url определяется при первой загрузке страницы со значением сжатия.Я пробовал 1000 значений, но невозможно обновить значение сжатия в URL при смене флажка.

Я надеюсь, что моя проблема ясна, не очень хорошо говорю по-английски.

Спасибо за помощь

Ответы [ 2 ]

22 голосов
/ 21 октября 2011

Просто свяжитесь с событием «BeforeUpload», и вы можете изменить настройки uploader.settings в соответствии со своими потребностями.

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";
  }
});
1 голос
/ 07 декабря 2016

В plupolad v3 chaging settings.url не будет работать.Вы должны использовать

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