如何删除具有相同相册 ID 的所有图像文件?

How do I delete all image files with same album id?

我有两个 table,一个包含所有图片(称为 billeder,丹麦语),有外键(在我的代码中称为 'album')告诉 它所属的相册,然后我有一个带有相册的主键 (alb_id)。所以我可以评估特定相册中的图片。

我知道如何删除 table 和服务器文件夹中的图片。效果不错。

但是我需要知道如何一次删除文件夹中的所有图片。

到目前为止我有这个:

  SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["connectionstring"].ToString());

    SqlCommand cmd = new SqlCommand();

    cmd.Connection = conn;


    cmd.CommandText = "DELETE FROM albums WHERE alb_id = @id";
    cmd.Parameters.AddWithValue("@id", id);

    conn.Open();  // Open the connection
    cmd.ExecuteNonQuery();
    conn.Close();

    cmd.CommandText = "DELETE FROM billeder WHERE album = @id";
    cmd.Parameters.AddWithValue("@id", id);

    conn.Open();  // Open the connection
    cmd.ExecuteNonQuery();
    conn.Close();

删除文件的代码:

   File.Delete(Server.MapPath("../fotos/" + image));

编辑:更新我关于如何为每个相册创建目录并删除它的答案,注意:albumId 必须是唯一的

为每个相册创建目录

var path = Server.MapPath("../fotos/") + albumId;

CreateDirectory(path);

删除相册目录

Directory.Delete(path , true);

鉴于您在 billeder table 中有图像路径,您可以在从 table 中删除行之前查询它们:

cmd.CommandText = "select imagePath FROM billeder WHERE album = @id";
var result = cmd.ExecuteQuery();

然后遍历结果集,依次删除每张图片:

foreach (var image in result) // assuming the result set is a list of strings
{
     File.Delete(Server.MapPath("../fotos/" + image));
}

更好的解决方案是将图像放入每个相册的文件夹中(使用相册 ID 或者更好的是 guid 作为文件夹的名称,然后您可以通过一次调用删除文件夹。