如何删除具有相同相册ID的所有图像文件?
我有一个两张桌子,一张带有所有图片(叫做billeder,它的丹麦语),它们有外键(在我的代码中称为“专辑”),它告诉巫婆专辑它属于,然后我有专辑,与主键(alb_id)。所以我可以评估特定专辑中的图片。如何删除具有相同相册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作为文件夹的名称,然后您可以用一次调用删除该文件夹。
谢谢,我想我会制作文件夹,但这仍然很好地知道我的想法。再次感谢。 –
编辑:更新我的关于如何创建每张专辑目录并删除它的答案,请注意:albumId必须是唯一的
创建每个相册的目录
var path = Server.MapPath("../fotos/") + albumId;
CreateDirectory(path);
删除相册目录
Directory.Delete(path , true);
您确定该文件夹仅包含**该相册的文件吗? –
从O,P“但我需要知道如何一次删除文件夹中的所有图片。” –
但是我仍然把它看作是*“一次删除文件夹中的所有图片(*)”* –
'但我需要知道如何一次性删除文件夹中的所有图片,为什么?删除他们一个接一个...... –
这对使用我的页面的用户不是很友好:)我希望有一个解决方案, –
@SeanCox - 她正在使用参数化的SQL命令。 SQL注入不应该是一个担心。但是,她应该使用'using'语句来封装她的连接和命令以防止内存和性能问题。 – Icemanind