Как отправить дополнительные данные с помощью PLupload? - PullRequest
40 голосов
/ 02 марта 2012

Я использую 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? Или есть какой-то другой способ, которым я могу достичь этого?

Ответы [ 4 ]

72 голосов
/ 05 марта 2012

Вы пробовали использовать настройку для 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 немного скудна для некоторых из этих настроек.

6 голосов
/ 03 апреля 2015

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

multipart_params : {
    "name1" : "value1",
    "name2" : "value2"
}
3 голосов
/ 26 февраля 2017

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

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

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

    };
});
3 голосов
/ 08 июня 2016

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

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

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

...