如何使用 PLupload 发送附加数据?
Posted
技术标签:
【中文标题】如何使用 PLupload 发送附加数据?【英文标题】:How to send additional data using PLupload? 【发布时间】:2012-03-21 02:01:04 【问题描述】:我正在使用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
);
我想要实现的是我的服务器中有一个文件夹,所有上传的内容都在其中 正在被拯救。 我需要在文件夹内为每个已上传文件的用户创建一个子文件夹。 如何将用户 ID 等数据添加到 plupload.Uploader 的实例中? 或者,如果我在容器 div 中包装一个表单,我能在 $_REQUEST 中看到它吗? 或者有其他方法可以实现吗?
【问题讨论】:
【参考方案1】:您是否尝试过使用 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 动态分配值,因此您可以使用 "name1" : $("#name1").val(),
之类的东西来代替 "name1" : "value1"
,其中 #name1 可能是页面其他位置的输入。
对于其中一些设置,Plupload 的文档有点稀疏。
【讨论】:
对我来说,“即时”意味着在活动期间(就在uploader.start()
之前),我设置了uploader.settings.multipart_params["name1"] = calcValue()
。
关于将参数存储在队列中的好文章。 bennadel.com/blog/…
你需要双引号吗?即是"name1"
还是name1
?
@hentrywright - 对于简单的字符串没有区别 :)
这很好,在极少数情况下,您在定义和初始化上传对象的早期阶段就知道您的帖子参数的值。但通常,它们可能来自其他表单输入。【参考方案2】:
您可以使用uploader.settings.multipart_params["name1"] = yourValue;
,但"name1"
必须在上传器配置中声明:
multipart_params :
"name1" : "value1",
"name2" : "value2"
【讨论】:
干得好。能够监听 BeforeUpload 和查询表单值并将它们附加到先前声明的 mulitpart_params。我已确认此方法有效且效果很好。【参考方案3】:如果您需要在每个文件上传时动态添加参数,您可以这样做:
uploader.bind('BeforeUpload', function(up, file)
up.settings.multipart_params =
"parameter1": "value1",
"paremeter2": "value2"
;
);
【讨论】:
【参考方案4】:你也可以使用
uploader.settings.url = "upload.php?param1=whatever"
并将其作为 get 变量传递。
【讨论】:
以上是关于如何使用 PLupload 发送附加数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何向 javascript 的 fetch() 函数发送附加数据
如何将带有附加数据的 FormData 文件发送到 asp.net web api ajax 调用