读书人

没法删除图片文件?求解

发布时间: 2013-08-06 16:47:25 作者: rapoo

无法删除图片文件?求解
运行后显示

文件“C:\web\upload\2013-01-01~2013-12-31\20130719101141sor\image\i20130407092958ivd.jpg”正由另一进程使用,因此该进程无法访问此文件。

而删除音乐和视频文件一切正常。路径核对全部正确,数据库信息也正常删除,就是服务器上的图片无法删除
,总是显示被占用。
小弟所学用尽,无解。

public void DataListA_ItemCommand(Object sender, DataListCommandEventArgs e)
{
if (e.CommandName == "E1_music_click")
{
Response.Redirect(((Literal)e.Item.FindControl("E1_music_link")).Text);
}
if (e.CommandName == "del")
{

switch (classify.Text)///英文
{
case "image":
((Literal)e.Item.FindControl("E1_link")).Text = ((Image)e.Item.FindControl("E1_img")).ImageUrl;
break;
case "music":
((Literal)e.Item.FindControl("E1_link")).Text = ((Literal)e.Item.FindControl("E1_music_link")).Text;
break;
case "video":
((Literal)e.Item.FindControl("E1_link")).Text = ((Literal)e.Item.FindControl("E1_media")).Text;
break;
case "flash":
((Literal)e.Item.FindControl("E1_link")).Text = ((Literal)e.Item.FindControl("E1_media")).Text;
break;


default:

break;
}

if (CC.ExecSQL("delete from d_media where code='" + ((LinkButton)e.Item.FindControl("filenameA")).Text + "'") == true)
{
if (((Literal)e.Item.FindControl("E1_link")).Text.Substring(0, 3) == "../")
{
if (classify.Text == "image")
{
///图片无法删除,另一个线程正在占用,需要释放资源,清空内存
string s = ((Literal)e.Item.FindControl("E1_link")).Text;

File.Delete(Server.MapPath(s));
}
else
{
string s = ((Literal)e.Item.FindControl("E1_link")).Text;

File.Delete(Server.MapPath(s));

}
Response.Redirect("user_resource.aspx?language=" + Page.Theme + "&classify=" + classify.Text + "&EndTime=" + C1_End_date.Text + "&Day=" + C1_Day.Text);


}
else
{

}

}
else
{
///文件删除错误
}


}
}
[解决办法]
在你代码里找下这个图片用的地方,在用着的开个的时候不能删的,释放掉才能删的
[解决办法]
1:首先查看C:\web\upload文件夹的权限。
2:查看图片是否打开着或者没有及时关闭和释放 Dispose
3:如果用FileStream 后及时clsoe,Dispose
3:尝试下面代码
string s = ((Literal)e.Item.FindControl("E1_link")).Text;
File.Delete(Server.MapPath(s));
改为下面
Image imde = Image.FromFile(s);
imde.Dispose();
File.Delete(xxx);

读书人网 >C#

热点推荐