扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
unlink()
网站建设、网站设计的关注点不是能为您做些什么网站,而是怎么做网站,有没有做好网站,给创新互联公司一个展示的机会来证明自己,这并不会花费您太多时间,或许会给您带来新的灵感和惊喜。面向用户友好,注重用户体验,一切以用户为中心。
删除文件。
语法:
int
unlink(string
filename);
返回值:
整数
函数种类:
文件存取
内容说明
本函数删除文件
filename,用法像
unix
中
c
语言呼叫的同名函数
unlink()。当发生错误则返回
或
false。
参考
rmdir()
删除的前提是,你的php程序有对目录的写权限。
没有办法一次性的,你可以自己写一个函数,读取该目录下所有文件,然后循环删除文件,再删除目录。
--------------------------------------------------
代码举例:
php删除文件夹及其文件夹下所有文件
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;
}
}
----------------------------------------
php删除指定文件和文件夹
?php
//删除指定目录(文件夹)中的所有文件函数
function
delfile($dir)
{
if
(is_dir($dir))
{
$dh=opendir($dir);//打开目录
//列出目录中的所有文件并去掉
.
和
..
while
(false
!==
(
$file
=
readdir
($dh)))
{
if($file!="."
$file!="..")
{
$fullpath=$dir."/".$file;
if(!is_dir($fullpath))
{
unlink($fullpath);//删除目录中的所有文件
}
else
{
delfile($fullpath);
}
}
closedir($dh);
}
}
//删除指定的目录
function
deldir(dir){
delfile(dir);
if
(is_dir($dir))
{
rmdir($dir);//目录必须是空的
}
}
?
现在,如果想删除d盘中的“我的相片”文件夹中的所有文件,就调用自定义函数delfile。
?php
$dir="d:/我的相片";
delfile($dir);
?
如果想删除d盘中的“我的相片”文件夹,调用自定义函数deldir。
?php
$dir="d:/我的相片";
deldir($dir);
?
php+mysql 删除图片在数据库记录的同时删除图片文件举例说明:
A href="?act='mypicdelid=?=$row['id']?" style="color:#FF0000;" onClick="return confirm('确定要删除吗')"删除/A
if($act == 'mypicdel')
{
$id = !empty($_GET['id']) ? intval($_GET['id']) : '';
//$filename 为你的图片地址,是从数据库里读出的
$sql = "SELECT * FROM wkcx_user WHERE id=$id"; // 查询表,取得图片的完整地址
$res = $db-query($sql);
$row = $db-getarray($res);
$filename = $row['avatar']; //给图片地址赋一个变量,大图
$filesmallname = $row['small_img']; //缩略图
if(file_exists($filename) file_exists($filesmallname))
{ //检查图片文件是否存在
unlink($filename);
unlink($filesmallname);
}
else
{
goBakMsg("文件不存在或路径有误!"); //js弹出窗口,我的封装了!可修改为 echo "scriptalert('有误');window.go(-1)/script"
exit;
}
$sql = "UPDATE wkcx_user SET avatar='',small_img='' WHERE id='$id'"; //我这个是头像,所以修改为空,如果是图片,直接删除就可以了
$db-query($sql);
urlMsg('删除成功','my_photo.php'); //同上,我封装了,就是一个提示+跳转!
$sql = "DELETE FROM wkcx_user_pic WHERE id='$id'"; //图片的时候,直接删除图片记录!
$db-query($sql);
urlMsg('删除成功','my_photo.php');
}
备注:一定要注意,先删除图片文件,在删除数据库记录!
if($_POST['submit3'])
{
$i = $_POST['id'];
//echo $i;
$r="SELECT * FROM `sy_zhanshi` WHERE `sy_zhanshi`.`id` = '$i'";
$que = $db-query($r);
$ro = $db-fetch_array($que);
$img = $ro['pic'];
@unlink(APPROOT.'/sy_shangpin_img/'.$img);
$db-query( "DELETE FROM `sy_zhanshi` where `sy_zhanshi`.`id` ='$i' ");
$db-Get_admin_msg("admin_shangpin_shouye_list.php","
你这里少贴出文件了。首先你屏蔽掉了 删除文件的错误,既即使文件不存在,也会忽略报错
语句@unlink(APPROOT.'/sy_shangpin_img/'.$img);
其中APPROOT 是个预定义变量。你在你的配置文件里查看一下路径。这里的配置可能是不对。当系统自动删除文件时 由于配置的预定义变量路径不对。而你又恰恰将错误忽略了。这样即便是没有文件,也不会提示错误。当然不能删除文件了。
解决方法:
1加入if()语句 判断文件是否删除,之后执行删除操作代码如下
$fileName = "APPROOT.'/sy_shangpin_img/'.$img";//这里指的是文件的相对路径
if(file_exists($filName))
{
//执行删除操作
unlink(APPROOT.'/sy_shangpin_img/'.$img);
}else{
echo "未找到该文件!";
}
2:查找APPROOT预定义变量
define APPROOT ......;找到该设置语句,将文件目录设置成自己的。
如果有什么不懂可以继续追问
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流