protected void btnDelete_Click(object sender, EventArgs e)
{
if (lbFiles.SelectedIndex < 0) return;
string selected = lbFiles.SelectedValue;
// 安全性檢查
if (!IsPathSafe(selected, RootPath)) { lblMsg.Text = "非法路徑"; return; }
try
{
if (Directory.Exists(selected))
{
Directory.Delete(selected, true); // true = 遞迴刪除子目錄與檔案
lblMsg.Text = "資料夾已刪除";
}
else if (File.Exists(selected))
{
File.Delete(selected);
lblMsg.Text = "檔案已刪除";
}
else
{
lblMsg.Text = "項目不存在";
}
LoadDirectory(CurrentPath);
}
catch (IOException ex)
{
lblMsg.Text = "刪除失敗 (檔案可能被鎖定): " + ex.Message;
}
catch (UnauthorizedAccessException ex)
{
lblMsg.Text = "權限不足: " + ex.Message;
}
catch (Exception ex)
{
lblMsg.Text = "刪除失敗: " + ex.Message;
}
}
避免誤刪資料永久遺失,建議實作軟刪除:
protected void btnBatchDelete_Click(object sender, EventArgs e)
{
foreach (ListItem item in lbFiles.Items)
{
if (item.Selected)
{
string path = item.Value;
if (IsPathSafe(path, RootPath))
{
try
{
if (Directory.Exists(path)) Directory.Delete(path, true);
else if (File.Exists(path)) File.Delete(path);
}
catch { /* 記錄失敗 */ }
}
}
}
LoadDirectory(CurrentPath);
}
刪除操作看似簡單,實則涉及安全性 (路徑遍歷)、效能 (大量檔案)、使用者體驗 (軟刪除/回收桶)、併發 (檔案鎖定)。生產環境務必實作軟刪除、背景非同步刪除、完整稽核日誌。