2013-04-03 43 views
2

你好我使用下面從一個目錄中的文件複製到另一個目錄代碼的工作就像一個魅力這是我的代碼:如何在PHP中複製唯一的特定擴展名文件?

<?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); 
} 
?> 

現在我只想將圖像文件從源複製folder.How我可以那樣做嗎?

回答

4

Getimagesize可以幫到你。它在錯誤時返回錯誤。文件不是圖像是錯誤的。

<?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); 
} 
?> 

OR

你只可以查看文件的擴展名:

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

但它可以躺下。

3

我看到2種方式:

  • 你讓可能的文件擴展名的數組,並檢查 $file VAR結束每個文件。
  • 或者您使用exif_imagetype()函數以及Imagetype contants來確定簽名中的文件類型。文檔 是here。但是,這有一個依賴關係,詳情請參閱 查看第一個用戶貢獻的註釋。
相關問題