-1

我在用 PHP 上传文件时遇到问题。我需要将文件的位置保存在数据库中,但它不起作用。另外,我想将文件重命名为时间戳+用户名。我将用户名存储在一个变量中。

最重要的是,如何将文件的位置发布到数据库?

编辑

现在,我正在将文件上传到服务器上的文件夹,但我不能将文件的位置保存为数据库上的字符串。我希望以后能够引用该文件,但不知道如何保存文件的位置以供以后使用。

$ext_img_2 = end(explode(".", $_FILES["img_2"]["name"]));
if ((($_FILES["img_2"]["type"] == "image/gif") || ($_FILES["img_2"]["type"] == "image/jpeg") || ($_FILES["img_2"]["type"] == "image/png") || ($_FILES["img_2"]["type"] == "image/pjpeg")) && ($_FILES["img_2"]["size"] < 6291456) && in_array($ext_img_2, $allowedExts))
{
    if ($_FILES["img_2"]["error"] > 0)
    {
        echo "Return Code: " . $_FILES["img_2"]["error"] . "<br>";
    }
    else
    {
        if (file_exists("AdImg2/" . $_FILES["img_2"]["name"]))
        {
            echo $_FILES["img_2"]["name"] . " already exists. " . "<br>";
        }
        else
        {
            move_uploaded_file($_FILES["img_2"]["tmp_name"], "AdImg2/" . $_FILES["img_2"]["name"]);
            mysql_query("INSERT INTO data (img_2) VALUES ('AdImg1/".$_FILES['img_1']['name']."')";
            echo "Stored in: " . "AdImg2/" . $_FILES["img_2"]["name"] . "<br>";
        }
    }
}
else
{
    echo "Invalid File" . "<br>";
}
4

1 回答 1

0

我建议您为上传的文件使用唯一名称(具有类似 uniqid http://php.net/manual/fr/function.uniqid.php的功能)并在需要时使用原始文件扩展名。例如 :

$name = uniqid() . '.' . pathinfo($filename, PATHINFO_EXTENSION);
$name = time() . '.' . pathinfo($filename, PATHINFO_EXTENSION); // For timestamp

然后,您执行巡回测试并执行以下操作:

$path = 'uploadedFilesDir/' . $name;
move_uploaded_file($_FILES["img_2"]["tmp_name"], $path);
mysql_query('INSERT INTO data(...) VALUES ("' . $path . '")');

就这么简单(注意目录权限,php可能无法写入目录)。

于 2013-02-15T13:33:30.987 回答