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

时间:2016-09-22 21:07:19

标签: c# asp.net file sql-delete

我有一张两张桌子,一张包含所有图片(称为billeder,它的丹麦语),有外键(在我的代码中称为'专辑'),告诉它所属的女巫专辑,然后我有一张专辑,主键(alb_id)。所以我可以评估特定专辑中的图片。

我知道如何在表格和服务器上的文件夹中删除图片。这很好。

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

到目前为止,我有这个:

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

2 个答案:

答案 0 :(得分:1)

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

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,作为文件夹的名称,然后您可以通过一次调用删除该文件夹。

答案 1 :(得分:0)

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

为每个专辑创建目录

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

CreateDirectory(path);

删除相册目录

Directory.Delete(path , true);