如何在php中复制唯一的特定扩展文件?

时间:2013-04-03 06:46:04

标签: php copy

您好我使用以下代码将文件从一个目录复制到另一个目录,其工作方式就像一个魅力这是我的代码:

<?php
function recurse_copy($src,$dst) {
    $dir = opendir($src);
    @mkdir($dst);
    while(false !== ( $file = readdir($dir)) ) {
        if (( $file != '.' ) && ( $file != '..' )) {
            if ( is_dir($src . '/' . $file) ) {
                recurse_copy($src . '/' . $file,$dst . '/' . $file);
            }
            else {
                copy($src . '/' . $file,$dst . '/' . $file);
            }
        }
    }
    closedir($dir);
}  if(isset($_POST["source"]) && isset($_POST["destination"])){

$src = $_POST["source"];

$dst = $_POST["destination" ];
recurse_copy($src,$dst);
}
?>

现在我想只复制源文件夹中的图像文件。我该怎么做?

2 个答案:

答案 0 :(得分:4)

Getimagesize可以帮到你。它在错误时返回false。文件不是图像错误。

<?php
function recurse_copy($src,$dst) {
    $dir = opendir($src);
    @mkdir($dst);
    while(false !== ( $file = readdir($dir)) ) {
        if (( $file != '.' ) && ( $file != '..' )) {
            if ( is_dir($src . '/' . $file) ) {
                recurse_copy($src . '/' . $file,$dst . '/' . $file);
            }
            else {
                /////
                if(!getimagesize($src . '/' . $file,$dst . '/' . $file)) continue;
                /////
                copy($src . '/' . $file,$dst . '/' . $file);
            }
        }
    }
    closedir($dir);
}  if(isset($_POST["source"]) && isset($_POST["destination"])){

$src = $_POST["source"];

$dst = $_POST["destination" ];
recurse_copy($src,$dst);
}
?>

您可以查看文件扩展名:

$ext = end(explode('.',$file));

但它可以撒谎。

答案 1 :(得分:3)

我看到两种方式:

  • 您创建了一个可能的文件扩展名数组,并检查结束 每个文件$file var。
  • 或者您使用exif_imagetype()函数以及Imagetype 用于确定签名中的文件类型的内容。文档 是here。但是,对于细节,存在依赖性 看第一个用户贡献的笔记。