您好我使用以下代码将文件从一个目录复制到另一个目录,其工作方式就像一个魅力这是我的代码:
<?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);
}
?>
现在我想只复制源文件夹中的图像文件。我该怎么做?
答案 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。但是,对于细节,存在依赖性
看第一个用户贡献的笔记。