如何使用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" }; });