2012-03-02 14 views
38

Sto usando plupload per caricare un file Ajax. Ora la classe plupload.Uploader ha molte opzioni ma nessuna è dati aggiuntivi.Come inviare dati aggiuntivi usando PLupload?

Per esempio:

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

Quello che sto cercando di achive è che ho una cartella in mio server dove tutti i files inseriti vengono salvate. I neeed all'interno della cartella per creare una sottocartella per ogni utente che hanno caricato i file lì. Come posso aggiungere dati come l'id dell'utente all'istanza di plupload.Uploader? O se dovessi avvolgere un modulo all'interno del contenitore div, sarò in grado di vederlo nel $ _REQUEST? Oppure c'è un altro modo in cui posso raggiungerlo?

risposta

71

Hai provato a utilizzare l'impostazione per multipart_params? Aggiungere un'opzione aggiuntiva per il vostro plupload.Uploader in questo modo:

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

Sarà quindi necessario per elaborare i valori nel file che gestisce il caricamento (upload.php per impostazione predefinita). Penso che i valori siano acquisiti da $_POST ma puoi usare lo $_REQUEST per sicurezza.

Ho usato jQuery per assegnare valori al volo, quindi al posto di "name1" : "value1" puoi usare qualcosa come "name1" : $("#name1").val(), dove # nome1 potrebbe essere un input altrove sulla pagina.

La documentazione di Plupload è un po 'scarsa per alcune di queste impostazioni.

+3

aiuto enorme Grazie! – liveandream

+22

Per me "al volo" significa durante un evento (e poco prima di 'uploader.start()'), ho impostato 'uploader.settings.multipart_params [" name1 "] = calcValue()'. – Jonno

+0

Buon articolo su come memorizzare i parametri in coda. http://www.bennadel.com/blog/2506-storing-per-file-multipart-params-in-the-plupload-queue.htm – Ecropolis

6

È possibile utilizzare uploader.settings.multipart_params["name1"] = yourValue; ma "name1" devono essere dichiarati in uploader config:

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

Ben fatto. In grado di ascoltare BeforeUpload e interrogare i valori del modulo e collegarli ai mulitpart_params precedentemente dichiarati. Ho confermato che questo metodo funziona e funziona bene. –

2

È inoltre possibile utilizzare

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

e semplicemente passare come variabile ottenere.

2

Se avete bisogno di aggiungere in modo dinamico i parametri su ogni file caricare si può fare questo:

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

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

    }; 
}); 
Problemi correlati