jQuery 文件上传正在检索额外的表单数据

jQuery File Upload retrieving additional form data

我很难理解在使用 Blueimp jQuery 文件上传上传文件时如何检索额外的表单数据。我想在上传文件时传递一个附加到文件名的值...

我的#fileupload 表单中有一个隐藏输入...

<input type="hidden" name="referrer" id="referrer" value="123">

我已将此添加到我的 main.js...

$('#fileupload').bind('fileuploadsubmit', function (e, data) {
    data.formData = $('form').serializeArray();
});

然后这个到 php 文件夹中的 index.php...

$smeg = $_POST['referrer'];

我现在无法解决的是如何在 UploadHander.php

中使用变量 $smeg

理想情况下,我想使用以下示例将变量添加到文件名中

protected function trim_file_name($file_path, $name, $size, $type, $error,$index, $content_range) {
   return $name. ' - '.$smeg;
}

但每当我尝试使用 $smeg 时,我都会收到错误消息 $smeg is an undefined variable。

我是否正确传递了附加表单数据?如果是,我是否检索它以供使用?

在您的函数范围内 $smeg 未定义。所以你可以在函数内部使用 $_POST['referrer']:

protected function trim_file_name($file_path, $name, $size, $type, $error,$index, $content_range) {
   return $name . ' - ' . $_POST['referrer'];
}

或者为函数签名添加另一个参数:

protected function trim_file_name($file_path, $name, $smeg, $size, $type, $error,$index, $content_range) {
   return $name . ' - ' . $smeg;
}

函数调用类似于:

trim_file_name($path, $name, $_POST['referrer'], /* more arguments */);

第二种方法 更可取 因为它消除了代码中 $_POST 数组的依赖性。

顺便说一下,如果您不在函数中使用所有这些参数 - 则无需在签名中定义它们并将函数简化为:

protected function trim_file_name($name, $smeg)
{
    return $name . '-' . $smeg;
}