PHP:关于用变量替换部分$ _FILES信息

时间:2016-05-23 22:29:42

标签: php

我可以这样做吗?

我确实有这个变量,取自html表格:

$dni = $_FILES['dni'];

我想像这样使用那个变量:

$dni["tmp_name"];

而不是:

$_FILES["dni"]["tmp_name"];

我已经尝试过但它不起作用,错误日志是静默的(没有显示任何内容)。有没有办法实现这个目标?

UPDATE:

这是实际的实施:

$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);

1 个答案:

答案 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"]);