PHP复制文件 移动到其他文件夹内

2024-12-18 23:50:54
推荐回答(4个)
回答1:

PHP 中的 copy() 函数可以实现

copy() 函数拷贝文件。

copy(source,destination)

参数说明
source 必需。规定要复制的文件。
destination 必需。规定复制文件的目的地。

详细说明
将文件从 source 拷贝到 destination。如果成功则返回 TRUE,否则返回 FALSE。

提示:如果要移动文件的话,请使用 rename() 函数。

注释:从 PHP 4.3.0 开始,如果启用了 "fopen wrappers" 的话,source 和 destination 都可以是 URL。更多信息见 fopen()。如果 destination 是一个 URL,则如果封装协议不支持覆盖已有的文件时拷贝操作会失败。

重要事项:如果目标文件已存在,将会被覆盖。

例如:
echo copy("source.txt","new_file/target.txt");
?>

回答2:

你要的是合并两个目录吗?

$source = 'D:/source/';
$target = 'D:/target/';

echo copy_merge ( $source, $target );

/**
 * 合并目录
 * @param $source 要合并的文件夹
 * @param $target 要合并的目的地
 * @return int 处理的文件数
 */
function copy_merge($source, $target) {
    // 路径处理
    $source = preg_replace ( '#/\\\\#', DIRECTORY_SEPARATOR, $source );
    $target = preg_replace ( '#\/#', DIRECTORY_SEPARATOR, $target );
    $source = rtrim ( $source, DIRECTORY_SEPARATOR ) . DIRECTORY_SEPARATOR;
    $target = rtrim ( $target, DIRECTORY_SEPARATOR ) . DIRECTORY_SEPARATOR;
    // 记录处理了多少文件
    $count = 0;
    // 如果目标目录不存在,则创建。
    if (! is_dir ( $target )) {
        mkdir ( $target, 0777, true );
        $count ++;
    }
    // 搜索目录下的所有文件
    foreach ( glob ( $source . '*' ) as $filename ) {
        if (is_dir ( $filename )) {
            // 如果是目录,递归合并子目录下的文件。
            $count += copy_merge ( $filename, $target . basename ( $filename ) );
        } elseif (is_file ( $filename )) {
            // 如果是文件,判断当前文件与目标文件是否一样,不一样则拷贝覆盖。
            // 这里使用的是文件md5进行的一致性判断,可靠但性能低,应根据实际情况调整。
            if (! file_exists ( $target . basename ( $filename ) ) || md5 ( file_get_contents ( $filename ) ) != md5 ( file_get_contents ( $target . basename ( $filename ) ) )) {
                copy ( $filename, $target . basename ( $filename ) );
                $count ++;
            }
        }
    }

    // 返回处理了多少个文件
    return $count;
}

回答3:

要代码就不给,自己去写,要思路吗?
1、对两个目录下的文件参数读取
2、循环对比文件大小
3、循环内判断目标目录中文件大小与源目录中文件是否不相等,符合就覆盖

回答4:

没有看明白 你的需要是什么,