上传时保存文件位置

时间:2013-02-15 13:21:03

标签: php post upload

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

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

修改

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

$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>";
}

1 个答案:

答案 0 :(得分: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可能无法在目录中写入)。

相关问题