如何删除具有相同相册 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 作为文件夹的名称,然后您可以通过一次调用删除文件夹。
我有两个 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 作为文件夹的名称,然后您可以通过一次调用删除文件夹。