Как отправить дополнительные данные с помощью PLupload?

Я использую plupload для загрузки файла ajax. Теперь класс plupload.Uploader имеет множество опций, но ни одна из них не является дополнительными данными.

Например :

var uploader = new plupload.Uploader({
    runtimes : 'gears,html5,flash,silverlight,browserplus',
    browse_button : 'pickfiles',
    container : 'contact_container',
    max_file_size : '10mb',
    url : 'upload.php',
    flash_swf_url : '/plupload/js/plupload.flash.swf',
    silverlight_xap_url : '/plupload/js/plupload.silverlight.xap',
    filters : [
        {title : "Image files", extensions : "jpg,gif,png"},
        {title : "Zip files", extensions : "zip"}
    ],
    resize : {width : 320, height : 240, quality : 90}
});

Я пытаюсь добиться того, что у меня есть папка на моем сервере, где сохраняются все загрузки. Мне нужно внутри папки создать подпапку для каждого пользователя, который загрузил туда файлы. Как я могу добавить данные, такие как идентификатор пользователя, в экземпляр plupload.Uploader? Или, если я оберну форму внутри div-контейнера, смогу ли я увидеть ее в $_REQUEST? Или есть другой способ добиться этого?


person eric.itzhak    schedule 02.03.2012    source источник


Ответы (4)


Вы пытались использовать параметр multipart_params? Добавьте дополнительную опцию в ваш plupload.Uploader следующим образом:

var uploader = new plupload.Uploader({
    runtimes : 'gears,html5,flash,silverlight,browserplus',
    browse_button : 'pickfiles',
    container : 'contact_container',
    max_file_size : '10mb',
    url : 'upload.php',
    flash_swf_url : '/plupload/js/plupload.flash.swf',
    silverlight_xap_url : '/plupload/js/plupload.silverlight.xap',
    filters : [
        {title : "Image files", extensions : "jpg,gif,png"},
        {title : "Zip files", extensions : "zip"}
    ],
    resize : {width : 320, height : 240, quality : 90},
    multipart_params : {
        "name1" : "value1",
        "name2" : "value2"
    }
});

Затем вам нужно будет обработать значения в файле, который обрабатывает загрузку (upload.php по умолчанию). Я думаю, что значения захватываются $_POST, но вы можете использовать $_REQUEST, чтобы быть уверенным.

Я использовал jQuery для присвоения значений на лету, поэтому вместо "name1" : "value1" вы можете использовать что-то вроде "name1" : $("#name1").val(),, где #name1 может быть вводом в другом месте страницы.

Документация Plupload немного скудна для некоторых из этих настроек.

person elconejito    schedule 05.03.2012
comment
Для меня на лету имелось в виду во время события (и незадолго до uploader.start()), я поставил uploader.settings.multipart_params["name1"] = calcValue(). - person Jonno; 20.03.2013
comment
Хорошая статья о хранении параметров в очереди. bennadel.com/ блог/ - person Ecropolis; 09.10.2014
comment
Вам нужны двойные кавычки? то есть это "name1" или name1? - person henrywright; 09.11.2014
comment
@hentrywright - Для простых строк нет никакой разницы :) - person Sean; 02.02.2015
comment
Это хорошо в том редком случае, когда вы знаете значение ваших параметров сообщения на ранней стадии, когда вы определяете и инициализируете свой объект загрузки. Однако часто они могут поступать из других входных данных формы. - person Rob_vH; 15.07.2015

Вы можете использовать uploader.settings.multipart_params["name1"] = yourValue;, но "name1" должен быть объявлен в конфигурации загрузчика:

multipart_params : {
    "name1" : "value1",
    "name2" : "value2"
}
person pb ty    schedule 03.04.2015
comment
Отличная работа. Возможность прослушивать значения формы BeforeUpload и запроса и присоединять их к ранее объявленным параметрам mulitpart_params. Я подтвердил, что этот метод работает и работает хорошо. - person Rob_vH; 15.07.2015

Если вам нужно динамически добавлять параметры при каждой загрузке файла, вы можете сделать это:

uploader.bind('BeforeUpload', function(up, file) {
    up.settings.multipart_params = {

        "parameter1": "value1",
        "paremeter2": "value2"

    };
});
person Agu Dondo    schedule 25.02.2017

Вы также можете использовать

uploader.settings.url = "upload.php?param1=whatever"

и просто передайте его как переменную get.

person Briscoe    schedule 08.06.2016