搜索
首页php教程PHP源码复制移动文件 - PHP

仿写elFinder的,抽出关键的成员方法做的一个简单示例
实现功能是:
实现多文件复制或移动操作

注:为了方便测试,对一些判断做了简单处理。并且会在程序文件所在目录下
      新生成一个test文件夹作为目的文件夹。如果实际使用需要修改。

<?php
/**
 * 复制/移动操作简单示例 : >PHP5
 *
 */
/**
 * 判断文件是否存在
 *
 */
function _isFind($filename) {
    return @file_exists($filename);
}
 
/**
 * 判断文件夹是否存在? 简单处理: 仅对根目录进行判断
 *
 */
function _isFindDir($dir) {
    $ls = scandir(dirname(__FILE__));
    foreach ($ls as $val) {
        if ($val == $dir) return TRUE;
    }
    return FALSE;
}
 
/**
 * 复制或移动
 *
 * @param   array   源文件夹数组: 简单处理:采用文件名作为元素值
 * @param   string  目的文件夹
 * @param   string  操作数: move - 移动 ; copy - 复制
 * @return  bool
 */
function _copy_move($src = array(), $dst = &#39;&#39;, $op = &#39;move&#39;) {
    if ( ! is_array($src)) {
        $src = array($src);
    }
     
    //判断源文件是否存在?
    foreach ($src as $val) {
        if ( _isFind($val) === FALSE) {
            return _log(&#39;Src file not find&#39;, $val);
        }
    }
     
    //判断目的文件夹是否存在? 如果不存在就生成
    //简单处理: 实际应用需要修改
    if (_isFindDir($dst) === FALSE) {
        @mkdir($dst);
    }
     
    //执行移动或复制操作
    foreach ($src as $val) {
        $_dst = $dst.&#39;/&#39;.basename($val);
         
        //判断目的文件是否存在? 存在不允许进行操作
        if (_isFind($_dst) === TRUE) {
            return _log(&#39;Dst file is exists&#39;, $dst);
        } else if (strpos($dst, $val) === 0) {
            return _log(&#39;Unable to copy/move into itself&#39;);
        }
         
        if (strtolower($op) === &#39;move&#39;) {           
            if ( ! rename($val, $_dst)) {
                return _log(&#39;Unable to move files&#39;, $val);
            } 
        } else if (strtolower($op) === &#39;copy&#39;) {
            if ( ! _copy($val, $_dst)) {
                return _log(&#39;Unable to copy files&#39;, $val);
            }
        }
    }
    return &#39;Success!&#39;;
}
 
/**
 * 复制操作  
 *
 */
function _copy($src, $dst) {
    if ( ! is_dir($src)) {
        if ( ! copy($src, $dst)) {
            return _log(&#39;Unable to copy files&#39;, $src);
        }
    } else {
        mkdir($dst);
        $ls = scandir($src);
         
        for ($i = 0; $i < count($ls); $i++) { 
            if ($ls[$i] == &#39;.&#39; OR $ls[$i] == &#39;..&#39;) continue;
             
            $_src = $src.&#39;/&#39;.$ls[$i];
            $_dst = $dst.&#39;/&#39;.$ls[$i];
             
            if ( is_dir($_src)) {
                if ( ! _copy($_src, $_dst)) {
                    return _log(&#39;Unable to copy files&#39;, $_src);
                }
            } else {
                if ( ! copy($_src, $_dst)) {
                    return _log(&#39;Unable to copy files&#39;, $_src);
                }
            }
        }
    }
    return TRUE;
}
 
/**
 * 日志记录
 *
 */
function _log($msg, $arg = &#39;&#39;) {
    if ($arg != &#39;&#39;) {
        $msg = "date[".date(&#39;Y-m-d H:i:s&#39;)."]\tmsg[".$msg."]\targ[".$arg."]\n";
    } else {
        $msg = "date[".date(&#39;Y-m-d H:i:s&#39;)."]\tmsg[".$msg."]\n";
    }
    echo $msg;
    return @file_put_contents(&#39;copy.log&#39;, $msg, FILE_APPEND);
} 
 
/**
 * 示例
 * 1. 需要修改$src的数组参数 ; 2. 可以修改_copy_move的第三个参数以分别测试move/copy操作
 *
 */
$src = array(&#39;img&#39;, &#39;min&#39;, &#39;phpinfo.php&#39;);
$dst = &#39;test&#39;;
var_dump(_copy_move($src, $dst, &#39;copy&#39;));
 
/*end of php*/


声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器