首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

没法删除图片文件?求解

2013-08-06 
无法删除图片文件?求解运行后显示文件“C:\web\upload\2013-01-01~2013-12-31\20130719101141sor\image\i20

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

文件“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);

热点排行