我有一张两张桌子,一张包含所有图片(称为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));
答案 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);