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

eri*_*hak 40 php upload jquery 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}
});
Run Code Online (Sandbox Code Playgroud)

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

小智 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"
    }
});
Run Code Online (Sandbox Code Playgroud)

然后,您需要处理处理上载的文件中的值(默认情况下为upload.php).我认为这些值是由$_POST你捕获的,但你可以使用$_REQUEST它来确定.

我已经使用jQuery动态分配值,因此"name1" : "value1"您可以使用类似"name1" : $("#name1").val(),#name1可能是页面上其他位置输入的内容.

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

  • 对于我来说,"在运行中"意味着在事件期间(在`uploader.start()`之前),我设置`uploader.settings.multipart_params ["name1"] = calcValue()`. (24认同)
  • 巨大的帮助谢谢! (3认同)

小智 7

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

multipart_params : {
    "name1" : "value1",
    "name2" : "value2"
}
Run Code Online (Sandbox Code Playgroud)


Agu*_*ndo 5

如果您需要在每个文件上传时动态添加参数,您可以这样做:

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

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

    };
});
Run Code Online (Sandbox Code Playgroud)