我如何删除所有图像文件与相同的相册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));
如果您在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);