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

2018-04-28 14:08:05 浏览数 (1)

代码语言:javascript复制
//原代码在ThinkPHPLibraryThinkUploadDriverFtp.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 人点赞