我在努力了解如何在使用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是一个未定义的变量。
我是否正确传递了其他表单数据,如果是,我是否将其检索以供使用?
答案 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;
}