2012-03-02 2 views
38

Я использую plupload, чтобы сделать загрузку файла ajax. Теперь класс plupload.Uploader имеет много вариантов, но нет дополнительных данных.Как отправить дополнительные данные с помощью PLupload?

Для примера:

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

ответ

71

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

+3

Огромную помощь Спасибо! – liveandream

+22

Для меня «на лету» означает во время события (и непосредственно перед 'uploader.start()'), я устанавливаю 'uploader.settings.multipart_params [" name1 "] = calcValue()'. – Jonno

+0

Хорошая статья о сохранении параметров в очереди. http://www.bennadel.com/blog/2506-storing-per-file-multipart-params-in-the-plupload-queue.htm – Ecropolis

6

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

multipart_params : { 
    "name1" : "value1", 
    "name2" : "value2" 
} 
+0

Молодцы. Возможность прослушать значения BeforeUpload и формы запроса и прикрепить их к ранее объявленным mulitpart_params. Я подтвердил, что этот метод работает и работает хорошо. –

2

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

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

и просто передать его в качестве переменной получить.

2

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

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

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

    }; 
}); 
Смежные вопросы