【问题标题】:Save file location on upload上传时保存文件位置
【发布时间】:2013-02-15 13:21:02
【问题描述】:

我在用 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>";
}

【问题讨论】:

  • 出于安全原因,在任何现代浏览器中都无法再将文件的原始位置保存在客户端计算机上。您将获得 C:/Fakepath 而不是原始路径。这可能可以通过 HTML 5 文件 API 规避(不确定),但您必须为此重建整个上传过程
  • @Pekka웃 他不只是想将文件位置存储在服务器上然后将其存储在数据库中吗?
  • @Tom 啊,也许你是对的。在这种情况下,您需要添加更多细节,副驾驶。什么地方失败了,会发生什么?
  • 我刚刚在编辑下添加了问题。请帮忙。另外,很抱歉没有添加更多细节。

标签: php post upload


【解决方案1】:

我建议您为上传的文件使用唯一名称(具有类似 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可能无法写入目录)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 2015-10-22
    • 2017-09-29
    • 2018-09-21
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    相关资源
    最近更新 更多