2014-03-28 69 views
0

這是PHP代碼:如何從不同的文件夾中刪除2個具有相同名稱的文件?

if (array_key_exists('delete_file', $_POST)) { 
    $filename = $_POST['delete_file']; 
    if (file_exists($filename)) { 
    unlink($filename); 
    echo 'File '.$filename.' has been deleted'; 
    } else { 
    echo 'Could not delete '.$filename.', file does not exist'; 
    } 
} 

這是以下形式:

echo '<form method="post">'; 
    echo '<input type="hidden" value="'.$file.'" name="delete_file" />'; 
    echo '<input type="submit" value="Delete image" />'; 
echo '</form>'; 

我有2個文件夾,圖像和縮略圖。我想從兩個文件夾中刪除具有相同名稱的文件。使用上面的代碼,我可以刪除文件只是一個文件夾。我是否應該複製第一個代碼並在表單中放置第二個隱藏輸入,或者解決此問題的最簡單方法是什麼? ($file包含路徑和縮略圖的文件,$file2包含路徑和大圖像的文件)

回答

1

最簡單的辦法:

echo '<form method="post">'; 
    echo '<input type="hidden" value="'.$file.'" name="delete_image" />'; 
    echo '<input type="hidden" value="'.$file2.'" name="delete_thumb" />'; 
    echo '<input type="submit" value="Delete image" />'; 
echo '</form>'; 

...然後:

function deleteFile($filename) { 
if (file_exists($filename)) { 
    unlink($filename); 
    echo 'File '.$filename.' has been deleted'; 
} else { 
    echo 'Could not delete '.$filename.', file does not exist'; 
} 
} 

if (array_key_exists('delete_image', $_POST)) { 
deleteFile($_POST['delete_image']); 
} 

if (array_key_exists('delete_thumb', $_POST)) { 
deleteFile($_POST['delete_thumb']); 
} 

更好的方法將有$文件只包含圖像文件名(不是它的路徑),並以同樣的方式命名所有的大拇指作爲他們相應的圖像。然後,你可以使用:

echo '<form method="post">'; 
    echo '<input type="hidden" value="'.$file.'" name="delete_image" />'; 
    echo '<input type="submit" value="Delete image" />'; 
echo '</form>'; 

...然後:

$folder_image = "images/"; 
$folder_thumb = "thumbs/"; 

function deleteFile($filename) { 
if (file_exists($filename)) { 
    unlink($filename); 
    echo 'File '.$filename.' has been deleted'; 
} else { 
    echo 'Could not delete '.$filename.', file does not exist'; 
} 
} 

if (array_key_exists('delete_image', $_POST)) { 
$file_image = $_POST['delete_image']; 
deleteFile($folder_image.$file_image); 
deleteFile($folder_thumb.$file_image); 
} 
+0

非常感謝你:)我喜歡最後一個:) – darksoul90

1

添加文件夾陣列和foreach循環

if (array_key_exists('delete_file', $_POST)) { 
    $folders = ['images/', 'thumbnails/']; 
    $filename = $_POST['delete_file']; 
    foreach($folders as $folder) { 
     if (file_exists($folder . $filename)) { 
      unlink($folder . $filename); 
      echo 'File '. $folder . $filename.' has been deleted'; 
     } else { 
      echo 'Could not delete '. $folder . $filename.', file does not exist'; 
     } 
    } 
} 
1

,你可以調整你的命名方案,以便您只需要1個隱藏的輸入。你的$文件變量只需要包含文件名而不是路徑。您將路徑保留在您的PHP腳本中,並將它們附加到從表單中接收到的值。您可以使用basename函數去除表單源中的路徑。你應該在echo語句中使用逗號。

if (array_key_exists('delete_file', $_POST)){ 
$filename='thumbs/'.$_POST['delete_file']; 
if (file_exists($filename)){ 
    unlink($filename); 
    echo'File ',$filename,' has been deleted'; 
} else { 
    echo'Could not delete ',$filename,', file does not exist'; 
} 
$filename='pics/'.$_POST['delete_file']; 
if (file_exists($filename)){ 
    unlink($filename); 
    echo'File ',$filename,' has been deleted'; 
} else { 
    echo'Could not delete ',$filename,', file does not exist'; 
} 
} 
相關問題