如何使用PLupload发送额外的数据?

我正在使用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} }); 

我试图达到的是我有一个文件夹在我的服务器上所有的上传被保存。 我需要在文件夹内为每个已经上传文件的用户创build一个子文件夹。 如何添加用户的id数据到plupload.Uploader的实例? 或者,如果我将在容器div内包装一个表单,我将能够在$ _REQUEST中看到它? 还是有其他方法可以实现这个?

您是否尝试过使用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来dynamic地分配值,所以可以使用类似于"name1" : $("#name1").val(),来代替"name1" : "value1" "name1" : $("#name1").val(),其中#name1可能是一个input在页面的其他地方。

对于其中一些设置,Plupload的文档有点稀疏。

你可以使用uploader.settings.multipart_params["name1"] = yourValue;"name1"必须在上传器configuration中声明:

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

你也可以使用

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

并将其作为getvariables传递。

如果您需要在每个file upload中dynamic添加参数,您可以这样做:

 uploader.bind('BeforeUpload', function(up, file) { up.settings.multipart_params = { "parameter1": "value1", "paremeter2": "value2" }; });