我可以这样做吗?
我确实有这个变量,取自html表格:
$dni = $_FILES['dni'];
我想像这样使用那个变量:
$dni["tmp_name"];
而不是:
$_FILES["dni"]["tmp_name"];
我已经尝试过但它不起作用,错误日志是静默的(没有显示任何内容)。有没有办法实现这个目标?
这是实际的实施:
$email = strip_tags($_POST['email']);
$dni = $_FILES['dni'];
define ('SITE_ROOT', realpath(dirname(__FILE__)));
function cargarDNI($archivo, $email) {
$uploadDir = '/archivosAlumnos';
$tmp_name = strip_tags($dni["tmp_name"]);
$nombreOriginal = $dni["name"];
$pathInfo = pathinfo(SITE_Root.$nombreOriginal);
$extension = $pathInfo['extension'];
$pattern = "/[^A-Za-z0-9]/";
$nombreSanitizado = preg_replace($pattern, "", $nombreOriginal);
$nombreFinal = strtolower($nombreSanitizado);
$tipo = 'dni';
move_uploaded_file($tmp_name, SITE_ROOT."$uploadDir/$email--$tipo--$nombreFinal.$extension");
};
cargarDNI($dni, $email);
答案 0 :(得分:3)
正如@Johnatan Kuhn在评论中首次提到的那样,问题与变量范围有关;在函数之外定义的变量不是已知的/可见的'在那个功能里面。
鉴于您已将数组传递给函数,在执行之前将其分配给单独的变量没有任何好处。只需将$_FILES['dni']
作为第一个参数传递即可满足您的需求:
删除第二行:$dni = $_FILES['dni'];
并将最后一行的函数调用更改为:cargarDNI($_FILES['dni'], $email);
然后,在函数本身内部,将$dni
的所有引用替换为参数$archivo
。因此,函数中的行$nombreOriginal = $dni["name"];
应为$nombreOriginal = $archivo["name"];
编辑:也是函数中的行:$tmp_name = strip_tags($dni["tmp_name"]);
,更改为:$tmp_name = strip_tags($archivo["tmp_name"]);