PHP - 从函数中随机名称上传文件失败

时间:2018-02-06 15:17:10

标签: php file-upload

我有这个非常讨厌的问题,脚本根本不想以新的随机生成名称上传文件。我已经多次重写该文件但没有成功。谁知道问题是什么?

我想它必须在这一行:

move_uploaded_file($_FILES["file"]["tmp_name"], "file/" . $new_name . '.' . $extension);

以下是完整的脚本:

<?php

    // Generates a random filename
    function random_string($length) {

        $key = '';
        $keys = array_merge(range(0, 9), range('a', 'z'));

        for ($i = 0; $i < $length; $i++) {
            $key .= $keys[array_rand($keys)];
        }

        if (file_exists('upload/' . $key)) {
            $key = random_string(++$length);
        }

        return $key;

    }

    // Get size of file in MB
    function filesizemb($file) {
        return number_format(filesize($file) / pow(1024, 2), 3,'.','');
    }

    $filename = $_FILES['file']['name'];
    $filetype = $_FILES['file']['type'];
    $filesize = $_FILES['file']['size'];

    // Get file extension
    $extension = end(explode(".", $_FILES["file"]["name"]));

    // Variable with new random name
    $new_name = random_string(1);

    if ($filesize < 300 * 1024 * 1024) 
    {
        if ($_FILES["file"]["error"] > 0) 
        {
            echo "Return Code: " . $_FILES["file"]["error"] . "<br>";

        } else {

                // Upload the file (this fails!)
                move_uploaded_file($_FILES["file"]["tmp_name"], "file/" . $new_name . '.' . $extension);    

                }

    } else {

            echo "File is too large!";

            }

?>

1 个答案:

答案 0 :(得分:1)

您正在检查文件是否存在于&#34;上传&#34;文件夹,同时尝试将文件移动到&#34;文件&#34;夹。这可能是问题所在。