繁体   English   中英

PHP中的图像上传脚本

[英]image upload script in php

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

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

我当时想我可以使用用户ID的图像名称存储图像,但是在那种情况下,很难将注释与这些图像一起存储。

有什么更好的办法吗?

经常使用的解决方案是每个图像具有两个数据:

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


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

  • 图像的路径
  • 上载用户的ID。

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

当然,这意味着当用户上传图像时,您将需要做更多的工作-但这也不错,并且可以证明是有用的。


同样,在需要时,您也可以向存储这些数据的数据库表中添加一些其他字段,例如:

  • 有关被允许查看每个图像的用户的信息
  • 诸如图像大小,内容类型,上次修改时间之类的东西。。。不必每次都需要从文件中重新计算它们

您不使用数据库吗?

如果不:

设置一个数据库来存储用户,然后在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.
       }
    }
}

另外,您只需要做一个Comment表并添加ImageId,当用户对图像进行注释时,只需将图像添加到注释行中即可进行跟踪。

你有数据库吗? 用户登录了吗? 创建一个表来跟踪图像,包括一个用户ID列,然后将整个图像存储在数据库中或仅存储图像的路径名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM