tp5中unlink(xxx):No sunch file or

2019-04-02  本文已影响0人  逸曦穆泽

记录一下tp5更新图片的一些过程:

思路:将原来的图片删除并新增上传的图片 ;想到就做了

预览功能(重要部分代码):
css:
<style>
.button{padding:10px 15px;}
.btn-success{color: #0f77ea;border: 1px solid #0f77ea;}
.btn-success:hover{color: #fff;background-color:#0f77ea;}
</style>
html:
<!-- 上传图片预览 -->
 <img src="" id="show" style="max-width:200px;margin: 0 10px">
 <input id="file" type="file" name="imgFile" style="display: none" onchange="chang(this)" accept="image/*" />
 <label for="file" class='button btn-success'>选择图片</label>
<!-- 原图片预览 由于要引入路径的,不引入可删除这两段代码 ↓,做预览就可以了 -->
 <img src={$data.img_src} id="oldImg" style="max-width:200px;margin: 0 10px">
 <input id="old" name="old" type="text"  style="display: none;">
<script>
//将上传图片赋值转换 达到优化按钮外形 和 预览 的效果
    function chang() {
        var reads= new FileReader();
        f=document.getElementById('file').files[0];
        reads.readAsDataURL(f);
        reads.onload=function (e) {
            document.getElementById('show').src=this.result;
        };
    }
 //img 路径赋值到 input 中
    var va = document.getElementById('old');
    va.value = document.getElementById('oldImg').src;
</script>

重点来了:

unlink($oldName); //删除旧文件

出现这种情况,因为在文件有一个unlink的private方法,但是不写$this则执行的是另外一个文件中的unlink方法。也因此才会出现类似unlink(xxx.jpg): No such file or directory的错误

解决方法:

找到文件:/thinkphp/library/think/cache/driver/File.php
然后重写unlink方法(拷贝到所在的控制器下的)
记得引入:use think\File;

/**
     * 判断文件是否存在后,删除
     * @param $path
     * @return bool
     * @author byron sampson <xiaobo.sun@qq.com>
     * @return boolean
     */
    private function unlink($path)
    {
        return is_file($path) && unlink($path);
    }

最后在要删除的方法里引入:

  $this ->unlink($oldName); //删除旧文件

参考来源:点我

上一篇下一篇

猜你喜欢

热点阅读