tp5 删除上传的原文件出现权限问题

tp5关于对上传文件的操作中,根据项目的业务需求,将上传的图片进行缩略或裁剪后,保存缩略图并需要删除原图片。此时相信很多朋友在删除原图时就遇到了权限这个问题!

权限如果有问题,我们想到的肯定是修改文件的权限了。但是我们尝试了chmod()函数来修改权限仍旧是删除不了,还是权限问题!

通过查找各种资料发现,有些朋友的解决办法是,先将原图片的存储路径保存到数据库中,然后取出再删! 但是这样增加了数据库的运行,而且表中还必须增加原图存储路径的字段。所以我个人也不建议用这种方式。

通过翻找tp5框架源码发现,File.php类文件中也没有删除文件的方法或unlink(),在Thinkphp/library/think/catch/driver/File.php中我们也发现unlink()方法是私有的,调用会报错!

后面个人经过尝试,发现,在另外一个运行周期内对原图进行删除就不存在权限的问题了! 

所以我的解决方式是:

1.先在添加上传文件的方法中,将原图的路径保存到session中(避免保存到表中,增加数据库操作压力)。


2.图片上传、缩略处理、保存路径、保存表单信息成功后,我们即会跳转到列表页或者其他页面。页面跳转,即此运行周期结束! 


3.跳转至下一个页面(即进行下一个运行周期了),进行下一个运行周期开始时,后台控制器方法中需要做一些处理获取数据并显示到模板,呈现下一页的画面!所以我们可以在此方法中首先取出存在session中的原图路径,判断路径是否存在,存在即通过chmod() 设置原图的权限,并进行删除! 


注意:删除原图后因为session中存储的原图路径已经没有用了,即删除此session值,同时删除用于交换路径的变量!




猜你喜欢

转载自blog.csdn.net/leo_jk/article/details/78238437