php中的图片上传脚本

Posted

技术标签:

【中文标题】php中的图片上传脚本【英文标题】:image upload script in php 【发布时间】:2011-03-15 20:25:21 【问题描述】:

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

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

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

有没有更好的办法?

【问题讨论】:

【参考方案1】:

一个常用的解决方案是为每张图片设置两个数据:

当然是磁盘上的文件 以及数据库中的一条记录

数据库中的记录一般至少会包含:

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

这样,对于每个图像,您都有额外的数据——您可以使用这些数据向您的应用程序添加一些行为。

当然,这意味着当用户上传图片时,您需要做更多的工作——但这​​也没有那么糟糕,而且可以证明是有用的。

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

允许查看每张图片的用户信息 图像大小、内容类型、上次修改时间等内容...不必每次需要时都从文件中重新计算这些内容

【讨论】:

感谢 Pascal 我明白了你的意思,但你能不能给我一些示例代码或一些链接,让我有更多的想法【参考方案2】:

你没有使用数据库吗?

如果没有:

建立一个数据库来存储用户,然后在图像和用户之间建立一个逻辑连接。

例如

用户:

|---------------------------------------
|  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.
       
    

另外你只需要做一个 Comments 表并添加 ImageId,当用户在图像上添加图像时,只需将图像添加到评论行中,以便你可以跟踪它。

【讨论】:

当你选择这个作为你的答案时,我只是告诉你一些你需要研究的东西,数据库安全(mysql_real_escape_string 和 sql 注入),表连接,图像安全(使用标题推送图像类型,png,jpg等)。 :) 快乐的日子【参考方案3】:

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

【讨论】:

以上是关于php中的图片上传脚本的主要内容,如果未能解决你的问题,请参考以下文章

我的 PHP 脚本无法上传 50M 以上的图片

PHP图片上传安全检查清单

thinkphp 检测上传的图片中是否含有木马脚本

php文件上传漏洞代码只允许上传图片

为啥上传图片时收不到响应数据?

上传图片时PHP表单处理错误