如何使用PLupload发送其他数据?

时间:2012-03-02 15:04:04

标签: php jquery upload 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}
});

我想要实现的是我的服务器中有一个文件夹,其中包含所有上传内容 正在得救。 我需要在文件夹中为每个在那里上传文件的用户创建一个子文件夹。 如何将像用户的id这样的数据添加到plupload.Uploader的实例中? 或者,如果我将一个表单包装在容器div中,我能否在$ _REQUEST中看到它? 还是有其他方法可以实现这个目标吗?

4 个答案:

答案 0 :(得分:72)

您是否尝试过使用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" : "value1"的内容来代替"name1" : $("#name1").val(),,其中#name1可能是页面上其他位置的输入。

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

答案 1 :(得分:6)

您可以使用uploader.settings.multipart_params["name1"] = yourValue;,但必须在上传器配置中声明"name1"

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

答案 2 :(得分:3)

您也可以使用

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

并将其作为get变量传递。

答案 3 :(得分:3)

如果您需要在每个文件上传中动态添加参数,您可以执行以下操作:

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

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

    };
});