dede图集删除后,本地图片无法删除。怎么解决啊?
dede/inc_batchup.php有删除附件的代码,但是不管用。文件目录权限都是777dede代码。//删除相关附件if($cfg_upload_switch=='...
dede/inc_batchup.php 有删除附件的代码,但是不管用。文件目录权限都是777
dede代码。
//删除相关附件
if($cfg_upload_switch == 'Y')
{
$dsql->Execute("url", "SELECT * FROM `#@__uploads` WHERE arcid = '$aid'");
while($row = $dsql->GetArray('url'))
{
$addfile = $row['url'];
$aid = $row['aid'];
$dsql->ExecuteNoneQuery("Delete From `#@__uploads` where aid = '$aid' ");
$upfile = $cfg_basedir.$addfile;
if(@file_exists($upfile)) @unlink($upfile);
}
}
有人遇到这个问题吗?请问如何解决 展开
dede代码。
//删除相关附件
if($cfg_upload_switch == 'Y')
{
$dsql->Execute("url", "SELECT * FROM `#@__uploads` WHERE arcid = '$aid'");
while($row = $dsql->GetArray('url'))
{
$addfile = $row['url'];
$aid = $row['aid'];
$dsql->ExecuteNoneQuery("Delete From `#@__uploads` where aid = '$aid' ");
$upfile = $cfg_basedir.$addfile;
if(@file_exists($upfile)) @unlink($upfile);
}
}
有人遇到这个问题吗?请问如何解决 展开
2个回答
展开全部
你在$upfile = $cfg_basedir.$addfile;
这句后面加上
var_dump($upfile);exit();
然后删除一个图集测试一下,看看打印出来的文件路径是否正确。
如果正确接下来的代码在有权限的情况下肯定会将文件删掉。
同时在判断下 while循环是否正常进入。
这句后面加上
var_dump($upfile);exit();
然后删除一个图集测试一下,看看打印出来的文件路径是否正确。
如果正确接下来的代码在有权限的情况下肯定会将文件删掉。
同时在判断下 while循环是否正常进入。
更多追问追答
追问
不行呢。dede_uploads 里的url 是这样的:/uploads/all_image/130915/1124232Z8-0.jpg
字段arcid是dede图集的ID。
字段aid 是图集的图片ID。
unlink(url) 要哦删除属于arcid的所有aid
追答
你确认一下/uploads/all_image/130915/1124232Z8-0.jpg路径针对你网站的根目录能否找到图片,如果你修改了附件存储位置,这里就要根据你修改的规则改一下。
展开全部
1、地址:你打印下目录地址,看看是否准确, $cfg_basedir看看这个变量的值是多少,如果是地址的问题话,根据图片存放的目录重新写一下;
2、删除:你可以直接删一个存放目录里的图片,比如:unlink('d:\appserv\statics\images\xxx.jpg');
2、删除:你可以直接删一个存放目录里的图片,比如:unlink('d:\appserv\statics\images\xxx.jpg');
更多追问追答
追问
$cfg_basedir 是CMS安装目录。变量为空
unlink($upfile); 文件样式是 /uploads/all_image/130915/1124232Z8-0.jpg 这样的
是不是需要转成
unlink('d:\appserv\statics\images\xxx.jpg');
这样的才能删除
追答
$cfg_basedir这个变量既然为空,那么你现在应带获得图片所在的文件夹地址,
1、你可以明文设定,即:xxx/uploads/all_image/130915/1124232Z8-0.jpg
,xxx要跟这段路径对的上
2、也可以通过函数获得:dirname(__file__),然后根据你当前文件的位置,设置准确路径
最后把所获得的路径赋给$cfg_basedir这个变量,记得写在前面
例:
$cfg_basedir = dirname(__file__);//或者 $cfg_basedir = “/uploads/all_image/130915/”
$dsql->Execute("url", "SELECT * FROM `#@__uploads` WHERE arcid = '$aid'");
while($row = $dsql->GetArray('url'))
{
$addfile = $row['url'];
$aid = $row['aid'];
$dsql->ExecuteNoneQuery("Delete From `#@__uploads` where aid = '$aid' ");
$upfile = $cfg_basedir.$addfile;
if(@file_exists($upfile)) @unlink($upfile);
}
对于路径问题一定要注意,因为你要找对了路径,才能删除。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询