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中的图片上传脚本的主要内容,如果未能解决你的问题,请参考以下文章