php 删除多个文件
Array([0]=>Array([imgname]=>201303219388.jpg[thumb]=>thumb_201303219388.jpg[path]=>up...
Array(
[0] => Array
(
[imgname] => 201303219388.jpg
[thumb] => thumb_201303219388.jpg
[path] => uploadtuku/20130321/
)
[1] => Array (
[imgname] => 201303213628.jpg
[thumb] => thumb_201303213628.jpg
[path] => uploadtuku/20130321/
)
[2] => Array (
[imgname] => 201303213324.jpg
[thumb] => thumb_201303213324.jpg
[path] => uploadtuku/20130321/
)
)
我有这样的一个数组,注意是文件夹里面的数据,现在我做了个批删除 怎么删除这个数组里面的图片及缩略图,path是路径,如果里面没有图片那么把path也删除掉?怎么做呢
function deletedetailed(){ $delete=M('Tukucontent'); $deletes=M('Tukuson'); $data['id']=array('in', substr($_POST['id'],0,-1));//删除目录图片$dele=$delete->where($data)->field('imgname,thumb,path')->select(); for($i=0;$i<count($dele);$i++){ $dir=$dele[$i]['path']; if(file_exists($dele[$i]['path'].$dele[$i]['imgname'])){ unlink($dele[$i]['path'].$dele[$i]['imgname']); unlink($dele[$i]['path'].$dele[$i]['thumb']); }if(!is_dir_kong($dir)){//没有数据返回空; rmdir($dir);}} if($delete->where($data)->delete()){ echo 1; }else{ echo 2; } }我用了自己的方法 给有需要的同学参考下吧~~~ 展开
[0] => Array
(
[imgname] => 201303219388.jpg
[thumb] => thumb_201303219388.jpg
[path] => uploadtuku/20130321/
)
[1] => Array (
[imgname] => 201303213628.jpg
[thumb] => thumb_201303213628.jpg
[path] => uploadtuku/20130321/
)
[2] => Array (
[imgname] => 201303213324.jpg
[thumb] => thumb_201303213324.jpg
[path] => uploadtuku/20130321/
)
)
我有这样的一个数组,注意是文件夹里面的数据,现在我做了个批删除 怎么删除这个数组里面的图片及缩略图,path是路径,如果里面没有图片那么把path也删除掉?怎么做呢
function deletedetailed(){ $delete=M('Tukucontent'); $deletes=M('Tukuson'); $data['id']=array('in', substr($_POST['id'],0,-1));//删除目录图片$dele=$delete->where($data)->field('imgname,thumb,path')->select(); for($i=0;$i<count($dele);$i++){ $dir=$dele[$i]['path']; if(file_exists($dele[$i]['path'].$dele[$i]['imgname'])){ unlink($dele[$i]['path'].$dele[$i]['imgname']); unlink($dele[$i]['path'].$dele[$i]['thumb']); }if(!is_dir_kong($dir)){//没有数据返回空; rmdir($dir);}} if($delete->where($data)->delete()){ echo 1; }else{ echo 2; } }我用了自己的方法 给有需要的同学参考下吧~~~ 展开
4个回答
展开全部
1. 首先是 路径要明确
建议使用绝对路径 (window: D:/www/upload/aaa.jpg unix: /home/dir/xxx/sdfsdf.jpg)
绝对路径是可以通过 __FILE__ 常量获取, 具体的细节要自己处理
如果是相对路径的话,比较麻烦 ,因为路径是 根据执行删除代码的 文件所在位置而定。
2. 如果路径定好了 就可以执行文件删除,先删除文件 在删文件夹
$filearray = array(....文件名 数组...);
$path = '绝对路径';
//这里@ 可以屏蔽 实际文件不存在时出现的报错
foreach($filearray as $v){
@unlink($path.$v['path'].$v['imgname']);
@unlink($path.$v['path'].$v['thumb']);
}
//删除文件夹 这里其实跟上面数组就没关系了, 你应该是要删除uploadtuku里面的 所有空文件夹
//PHP5 有一个函数叫 scandir 扫描目录里面文件和文件夹
//如果是 LINUX服务器 删除目录 还需要相应的权限,一般可以上传文件的话 权限是已经给了
$files = scandir($path.'uploadtuku');
foreach($files as $v){
if($v!=='.' && $v!=='..' && is_dir($path.'uploadtuku/'.$v)){
@rmdir($path.'uploadtuku/'.$v);
}
}
删除文件夹的时候 如果里面有文件 那么rmdir就不会删除文件夹。
建议使用绝对路径 (window: D:/www/upload/aaa.jpg unix: /home/dir/xxx/sdfsdf.jpg)
绝对路径是可以通过 __FILE__ 常量获取, 具体的细节要自己处理
如果是相对路径的话,比较麻烦 ,因为路径是 根据执行删除代码的 文件所在位置而定。
2. 如果路径定好了 就可以执行文件删除,先删除文件 在删文件夹
$filearray = array(....文件名 数组...);
$path = '绝对路径';
//这里@ 可以屏蔽 实际文件不存在时出现的报错
foreach($filearray as $v){
@unlink($path.$v['path'].$v['imgname']);
@unlink($path.$v['path'].$v['thumb']);
}
//删除文件夹 这里其实跟上面数组就没关系了, 你应该是要删除uploadtuku里面的 所有空文件夹
//PHP5 有一个函数叫 scandir 扫描目录里面文件和文件夹
//如果是 LINUX服务器 删除目录 还需要相应的权限,一般可以上传文件的话 权限是已经给了
$files = scandir($path.'uploadtuku');
foreach($files as $v){
if($v!=='.' && $v!=='..' && is_dir($path.'uploadtuku/'.$v)){
@rmdir($path.'uploadtuku/'.$v);
}
}
删除文件夹的时候 如果里面有文件 那么rmdir就不会删除文件夹。
展开全部
<?
function deldir($dir) {
//先删除目录下的文件:
$dh=opendir($dir);
while ($file=readdir($dh)) {
if($file!="." && $file!="..") {
$fullpath=$dir."/".$file;
if(!is_dir($fullpath)) {
unlink($fullpath);
} else {
deldir($fullpath);
}
}
}
closedir($dh);
//删除当前文件夹:
if(rmdir($dir)) {
return true;
} else {
return false;
}
}
?>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
删除文件用unlink() 删除数组内的元素可以用unset($arr['xxx'])
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
foreach($list as $v){
$image = $v['path'] . $v['imgname'];
$timg = $v['path'] . $v['thumb'];
is_file($image) && unlink($image);
is_file($timg) && unlink($timg);
is_dir($v['path']) && !empty(glob($v['path'] . '*')) && rmdir($v['path']);
}
没测试. lz可以跑下...
$image = $v['path'] . $v['imgname'];
$timg = $v['path'] . $v['thumb'];
is_file($image) && unlink($image);
is_file($timg) && unlink($timg);
is_dir($v['path']) && !empty(glob($v['path'] . '*')) && rmdir($v['path']);
}
没测试. lz可以跑下...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询