php中的图片上传脚本

时间:2010-07-14 13:00:20

标签: php image file-upload

在我的应用程序中,用户可以创建他/她的相册。

我的问题是如何上传特定于上传过的用户ID的图片?这意味着应该有一些标准表明这些图像属于该用户。

我认为我可以使用user-id的图像名称存储图像,但在这种情况下,将注释与这些图像一起存储将很困难。

还有更好的方法吗?

3 个答案:

答案 0 :(得分:3)

经常使用的解决方案是为每个图像提供两个数据:

  • 磁盘上的文件,当然是
  • 数据库中的记录


数据库中的记录通常至少包含:

  • 图片的路径
  • 上传用户的ID。

这样,对于每个图像,您都有其他数据 - 您可以使用这些数据为应用程序添加一些行为。

当然,这意味着当用户上传图片时你会有更多的工作 - 但它也不是那么糟糕,并且证明是有用的。


如果需要,您还可以将一些其他字段添加到存储这些数据的数据库表中,例如:

  • 有关允许查看每张图片的用户的信息
  • 像图像大小,内容类型,上次修改时间,......不需要在每次需要时重新计算文件中的内容

答案 1 :(得分:2)

您没有使用数据库吗?

如果不是:

设置数据库以存储用户,然后在iamges和用户之间创建逻辑连接。

例如

用户:

|---------------------------------------
|  UserId       Username      Password |
|---------------------------------------
|     1         Robert        3j9745t3 |
|     2          Paul         03945u30 |
|---------------------------------------

图片:

|--------------------------------------------------
|  ImageID       UserId      Desc       ImageHash |
|-------------------------------------------------|
|     1            1        Some Desc  87ytr8d23yr|
|     2            1        Some Desc  5uty4095u40|
|-------------------------------------------------|

然后将图像存储在图像目录中,如87ytr8d23yr.png,然后就可以进行像这样的php查询

$userid = 1;
$sql = "SELECT * FROM Images WHERE UserId = " . (int) $userid . " ORDER BY ImageID LIMIT 10";

if(false !== ($resource = mysql_query($sql)))
{
    while($imageRow = mysql_fetch_object($resource))
    {
       if(file_exists('imageDir/' . $imageRow->ImageHash . '.png'))
       {
            //Do whatever.
       }else
       {
           //Delete the row and inform the user that the picture has been deleted for some reason.
       }
    }
}

此外,您只需要做一个评论表并添加ImageId,当用户对图像发表评论时,只需将图像添加到评论行中即可跟踪它。

答案 2 :(得分:0)

你有数据库吗?用户是否已登录?创建一个表来跟踪图像,包括一个用户ID列,并将整个图像存储在数据库中,或者只存储图像的路径名。