专栏首页我的博客Thinkphp3.2.3FTP上传文件同名覆盖问题

Thinkphp3.2.3FTP上传文件同名覆盖问题

//原代码在\ThinkPHP\Library\Think\Upload\Driver\Ftp.class.php
//大概在94行左右
    /**
     * 保存指定文件
     * @param  array   $file    保存的文件信息
     * @param  boolean $replace 同名文件是否覆盖
     * @return boolean          保存状态,true-成功,false-失败
     */
    public function save($file, $replace=true) {
        $filename = $this->rootPath . $file['savepath'] . $file['savename'];

        /* 不覆盖同名文件 */
        // if (!$replace && is_file($filename)) {
        //     $this->error = '存在同名文件' . $file['savename'];
        //     return false;
        // }

        /* 移动文件 */
        if (!ftp_put($this->link, $filename, $file['tmp_name'], FTP_BINARY)) {
            $this->error = '文件上传保存错误!';
            return false;
        }
        return true;
    }
     //源代码当中屏蔽了同名覆盖的判断
    //需要改成
     //构造函数当中rootPath设置有误
     $this->rootPath = ftp_pwd($this->link);
    /**
     * 保存指定文件
     * @param  array   $file    保存的文件信息
     * @param  boolean $replace 同名文件是否覆盖
     * @return boolean          保存状态,true-成功,false-失败
     */
    public function save($file, $replace=true) {
        $filename = $this->rootPath . $file['savepath'] . $file['savename'];
        /* 不覆盖同名文件 */
        if (!$replace) {
            ftp_chdir($this->link, $this->rootPath . $file['savepath']);
            $ftpFileList = ftp_nlist($this->link, ".");
            if(in_array($file['savename'], $ftpFileList)) {
                $this->error = '存在同名文件' . $file['savename'];
                return false;
            }
        }
        /* 移动文件 */
        if (!ftp_put($this->link, $filename, $file['tmp_name'], FTP_BINARY)) {
            $this->error = '文件上传保存错误!';
            return false;
        }
        return true;
    }
//使用配置config
Array
(
    [maxSize] => 734003200
    [savePath] => 
    [saveName] => test
    [exts] => Array
        (
            [0] => jpeg
            [1] => bmp
            [2] => zip
            [3] => jpg
        )

    [subName] => 2016/test
    [rootPath] => 
)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • PHP采集原理

    很多时间我们的信息都是来自其他网站,这样我们复制,粘贴,发布很麻烦,当然你不可以把他们的信息批量复制过来,这个时候就需要采集了~~ 采集就是使用file_get...

    苦咖啡
  • Laravle Job 案例

    make:job 创建一个新JOb类 protected $msg; /** * Create a new job instance. * * @ret...

    苦咖啡
  • Jpgraph 3.5 中文乱码问题解决

    今天设置了Jpgraph生成的图表加上中文标题乱码,搜索下结果都是加什么字体了设置这个,修改那个。。后来看到这个文章:http://anshao.net/cod...

    苦咖啡
  • 前端零基础入门:页面结构层HTML(2)

    达达前端
  • Cocos CreatorUI系统下

    若本号内容有做得不到位的地方(比如:涉及版权或其他问题),请及时联系我们进行整改即可,会在第一时间进行处理。

    达达前端
  • Cocos Creator开发hello World

    若本号内容有做得不到位的地方(比如:涉及版权或其他问题),请及时联系我们进行整改即可,会在第一时间进行处理。

    达达前端
  • 文件系统之file结构体管理源码分析(基于linux1.2.13)

    操作系统为进程维护了打开的文件列表,每个进程维护了一个file数组字段(struct file * fd[NR_OPEN]);每个元素指向一个file结构体。每...

    theanarkh
  • Linux shell ${}简单用法

    Linux shell ${}简单用法 [转]http://linux.chinaunix.net/techdoc/develop/2007/05/05/9...

    汤高
  • Uploads-labs上传绕过(上)

    链接:https://pan.baidu.com/s/1lMRBVdQyFuKOgNlWPUoSSQ

    字节脉搏实验室
  • Cocos Creator打包发布

    若本号内容有做得不到位的地方(比如:涉及版权或其他问题),请及时联系我们进行整改即可,会在第一时间进行处理。

    达达前端

扫码关注云+社区

领取腾讯云代金券