2012-03-02 31 views
38

Estoy usando plupload para hacer una carga de archivos ajax. Ahora la clase plupload.Uploader tiene muchas opciones pero ninguna es información adicional.¿Cómo enviar datos adicionales usando PLupload?

Por ejemplo:

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

Lo que estoy tratando de achive es que tengo una carpeta en mi servidor en el que todos los archivos se guardan las . Necesito dentro de la carpeta para crear una subcarpeta para cada usuario que haya subido archivos allí. ¿Cómo puedo agregar datos como id del usuario a la instancia de plupload.Uploader? O si voy a envolver un formulario dentro del contenedor div, ¿podré verlo en $ _REQUEST? ¿O hay alguna otra forma en que pueda lograr esto?

Respuesta

71

¿Ha intentado utilizar la configuración de multipart_params? Añadir una opción adicional a su plupload.Uploader así:

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

A continuación, tendrá que procesar los valores en el archivo que gestiona la carga (upload.php por defecto). Creo que los valores son capturados por $_POST pero puede usar $_REQUEST solo para estar seguro.

He utilizado jQuery para asignar valores sobre la marcha, por lo que en lugar de "name1" : "value1" puede usar algo como "name1" : $("#name1").val(), donde # name1 podría ser una entrada en otra parte de la página.

La documentación de Plupload es un poco escasa para algunas de estas configuraciones.

+3

gran ayuda Gracias! – liveandream

+22

Para mí "sobre la marcha" significaba durante un evento (y justo antes de 'uploader.start()'), configuré 'uploader.settings.multipart_params [" name1 "] = calcValue()'. – Jonno

+0

Buen artículo sobre el almacenamiento de parámetros en la cola. http://www.bennadel.com/blog/2506-storing-per-file-multipart-params-in-the-plupload-queue.htm – Ecropolis

6

Puede utilizar uploader.settings.multipart_params["name1"] = yourValue; pero "name1" deben ser declarados en la configuración de subida:

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

Bien hecho. Capaz de escuchar BeforeUpload y consultar valores de formulario y adjuntarlos a los mulitpart_params previamente declarados. He confirmado que este método funciona y funciona bien. –

2

También puede utilizar

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

y simplemente pasarlo como una variable de conseguir.

2

Si es necesario agregar de forma dinámica los parámetros en cada archivo de carga se puede hacer esto:

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

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

    }; 
}); 
Cuestiones relacionadas