PHP对编辑器上传的图片进行管理

作者: 分类: php 发布时间: 2021-03-22 16:05 浏览人数:31
 

文章中总会有图片若干。在增加文章或者单页页面的过程中会自动上传到网站的图片目录中。但在修改文章的过程中如果对图片进行相关的删除操作,虽然在代码中已经删除了数据的标签,<img src="..."/>类似于这样的标签。但是图片的文件依旧存在于网站上(图片目录)。这时候需要一定的管理。


处理思想:

1、记录所有上传的图片的路径地址文件名等信息。

2、在管理图片的地方,遍历每一张图片和每一篇文章,查找图片的地址是否存在于某一篇文章的内容中。


处理办法:

1、创建一个管理图片用的数据表,例如:

字段注释
idID
url图片地址


2、在每上传一张图片的时候,添加一条 url内容为图片地址 的数据保存到上述所创建的数据表中。


3、在管理图片用的页面,通过以下SQL语句查找出每一张图片被引用的次数:

表名注释
image图片管理表
article文章管理表
single_page单页管理表

SELECT
	image.*, -- 这里使用连接的图片信息记录,而不是直接a.*。因为a.*带有字段count,该内容不全一致
	sum(a.count) AS count -- 计算每一张图片总共被引用的次数
FROM
	(
		SELECT -- 遍历每一条图片记录,并且获取图片地址被多少个页面内容引用
			image.*, 
			(
				SELECT
					count(*)
				FROM
					single_page
				WHERE
					content LIKE concat("%", image.url, "%")
			) count
		FROM
			image
		UNION
			SELECT
				image.*, 
				(
					SELECT -- 遍历每一条图片记录,并且获取图片地址被多少篇文章内容引用
						count(*)
					FROM
						article
					WHERE
						content LIKE concat("%", image.url, "%")
				) count
			FROM
				image
	) a
LEFT JOIN image ON image.id = a.id -- 这里连接图片信息表
GROUP BY
	a.id -- 通过id分组


执行以上语句查询并转换为JSON之后,会返回如下结果:

[
  {
    "id": 1,
    "url": "/storage/article/20210321/cf94c2a79434fd53cb9ce7d9d5ed98af.png", 
    "c_time": "2021-03-21 11:54:19", 
    "count": 3
  },
  {
    "id": 2, 
    "url": "/storage/article/20210321/7ba28b5451b9de5a382c95052abfee9e.png", 
    "c_time": "2021-03-21 11:55:43", 
    "count": 0
  }
]


返回结果解释:

注释
id图片id
url图片地址
c_time图片创建时间
count图片被引用次数(即图片被多少个页面所引用)


当然,这并不代表就是好的办法。也有可能有更好的办法,亦或者是以上代码可以优化简化。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!