jQuery文件上传检索其他表单数据

时间:2017-03-25 19:10:46

标签: php jquery jquery-file-upload

我在努力了解如何在使用Blueimp jQuery File Upload上传文件时检索其他表单数据。我想要在上传时传递一个值附加到文件名...

我的#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是一个未定义的变量。

我是否正确传递了其他表单数据,如果是,我是否将其检索以供使用?

1 个答案:

答案 0 :(得分:1)

在您的函数范围中,$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 */);

第二种方法是 preferorable ,因为它消除了代码中$_POST数组的依赖性。

顺便说一句,如果你不在你的函数中使用所有这些参数 - 就不需要在签名中定义它们并简化函数,如:

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