我如何删除所有图像文件与相同的相册id

本文关键字:文件 id 图像 何删除 删除 | 更新日期: 2023-09-27 18:08:34

我有两个表,一个有所有的图片(称为billeder,它的丹麦),有外键(在我的代码中称为'album'),告诉它属于哪个专辑,然后我有一个相册,主键(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));

我如何删除所有图像文件与相同的相册id

如果您在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,作为文件夹的名称),然后您可以通过单个调用删除文件夹。

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

创建目录

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

删除相册目录

Directory.Delete(path , true);