I'm using plupload to make an ajax file uploading. Now the plupload.Uploader class has many options but none are additional data.
For Example :
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}
});
What i'm trying to achive is i have a folder in my server where all the uploads are being saved. I neeed inside the folder to create a sub-folder to each user that have uploaded files there. How can i add data like id of the user to the instance of plupload.Uploader? Or if i'll wrap a form inside the container div, will i be able to see it in the $_REQUEST? Or is there some other way i can achive this?
Have you tried using the setting for multipart_params? Add an additional option to your plupload.Uploader like so:
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"
}
});
You will then need to process the values in the file that handles the upload (upload.php by default). I think the values are captured by $_POST
but you can use $_REQUEST
just to be sure.
I've used jQuery to assign values on the fly, so instead of "name1" : "value1"
you can use something like "name1" : $("#name1").val(),
where #name1 might be an input elsewhere on the page.
Plupload's documentation is a little sparse for some of these settings.
You can use uploader.settings.multipart_params["name1"] = yourValue;
but "name1"
must be declared in uploader config :
multipart_params : {
"name1" : "value1",
"name2" : "value2"
}
You can also use
uploader.settings.url = "upload.php?param1=whatever"
and just pass it as a get variable.
If you need to dynamically add parameters on every file upload you can do this:
uploader.bind('BeforeUpload', function(up, file) {
up.settings.multipart_params = {
"parameter1": "value1",
"paremeter2": "value2"
};
});
来源:https://stackoverflow.com/questions/9535462/how-to-send-additional-data-using-plupload