【问题标题】:linking upload picture codes with mysql用mysql链接上传图片代码
【发布时间】:2014-05-21 16:10:28
【问题描述】:

我正在制作个人资料图片之类的东西。我做了一个表格上传图片和upload_file代码是成功的,但我只需要一种方法将上传与mysql链接。或以任何方式使上传的图片成为个人资料图片。

这是我做的代码:

选择图片(upload_form.php)

<html>
<body>

<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>

</body>
</html> 

和upload_file.php

 <?php
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);

if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 1048576)
&& in_array($extension, $allowedExts)) {
  if ($_FILES["file"]["error"] > 0) {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
  } else {
    echo "Upload: " . $_FILES["file"]["name"] . "<br>";
    echo "Type: " . $_FILES["file"]["type"] . "<br>";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
    if (file_exists("upload/" . $_FILES["file"]["name"])) {
      echo $_FILES["file"]["name"] . " already exists. ";
    } else {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
    }
  }
} else {
  echo "Invalid file";
}
?>

这些代码成功上传图片。所以我下一步是如何制作头像??

提前感谢

【问题讨论】:

    标签: php mysql upload image-uploading


    【解决方案1】:

    这不是一个完整的解决方案,不包含任何代码。

    但它可能会让您对您在高层次上实际需要做的事情有所了解。

    假设

    1. 您正在上传个人资料图片。因此,您已经有了 users 表和代码来创建新用户。
    2. 用户将登录到他们的帐户并上传图片

    数据库 - 用户表

    1. 在用户表中有一个名称为图片的列。哪个可以为空。我们将为每个用户在此字段中存储上传图片的文件名。这是一个字符串。

    上传 - 处理

    1. 您已经在上传图片。现在为上传的文件名指定一个唯一的名称,而不是用户上传图片的名称。

      • 因为,用户 1 和用户 2 可能都上传了一个名为 pic.jpg 的文件,而您最终在上传的文件夹中只有一个 pic.jpg
      • 在您的用户表中,每个用户应该有一些唯一的字段。可能是电子邮件或用户名。因此,最好将用户名 + 时间的 md5 哈希值用作文件名。
      • 不要使用用户 ID 作为文件名。尽管它可以帮助您快速获得工作代码,但一些带有简单脚本的 body 可以获取您所有用户的图片。
    2. 在静态文件夹中创建一个名为“upload”或类似名称的文件夹,并将用户的图片上传到该文件夹​​。

    3. 成功上传图片后,将文件名存储在用户表中您上面添加的“图片”列下。

    显示头像

    1. 你肯定想显示带有用户名的头像。
    2. 因此,在获取用户详细信息的同时,还要从数据库中获取图片名称并以正确的路径显示。

    下一步

    1. 用户可以上传一张大图作为他们的头像。因此,为大小为 100 像素 X 120 像素的个人资料图片显示 5 兆像素图像并不是一个好主意。因此,在上传时最好重新调整大小、裁剪并存储它,这样可以节省最终用户的带宽。
    2. 还要确保保留用户的原始图像。可能是您稍后在向您的网站添加新功能时需要不同大小的用户图片。
    3. 确保当用户删除他们的帐户时,也删除他们的原始图片。 :)
    4. 您可以为此使用 gd2 或 ImageMagick。

    希望这能让您对接下来需要查看的内容有所了解。

    【讨论】:

    • 从假设当前只有管理员用户希望限制为 2 个管理员,只有这 2 个管理员拥有自己的帐户,是的,他们必须登录并上传图片。来自数据库:我的管理表包含 ID、AdminName、e.mail 和密码列(以及它也用于登录)
    • 上传 - 过程:1 和 2 是的。我问这个问题是为了知道我应该在 3 步和接下来的步骤中具体做什么
    • 目前我想知道如何将上传与数据库和路径链接起来。谢谢你的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 2016-07-20
    • 2012-07-19
    相关资源
    最近更新 更多