move_upload_file不适用于扩展更改

时间:2015-11-09 04:03:17

标签: php

这是我的php文件的一部分,负责重命名文件并上传

if ( 0 < $_FILES['file']['error'] ) {
    echo 'Error: ' . $_FILES['file']['error'] . '<br>';
}

else {
    $filename=$_FILES['file']['tmp_name'];
    $extension=end(explode('.', $filename));
    $newfilename=$first_name . '_' . $last_name.'.'.$extension;
    move_uploaded_file($filename, 'uploads/' .$newfilename);
}

我不确定文件没有上传的原因?

1 个答案:

答案 0 :(得分:1)

您不能直接在end()函数中传递explode返回的数组。同时验证uploads文件夹是否应具有有效的read/write权限。

您尝试从$_FILES['file']['tmp_name']获取扩展,这是错误的。

  

end() - &gt;参数¶数组。该数组通过引用传递   因为它是由函数修改的。这意味着你必须通过它   实数变量而不是仅返回数组的函数   实际变量可以通过引用传递。

请参阅this以供参考。

试试这个:

$filename=$_FILES['file']['name'];   //this param contains name of file
$arr = explode('.', $filename);
$extension=end($arr);
$newfilename=$first_name . '_' . $last_name.'.'.$extension;
move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/' .$newfilename);