为了账号安全,请及时绑定邮箱和手机立即绑定

Asp.net移动或删除文件

标签:
SQL Server

数据库只存储文件一些基本信息,真正文件是存储在目录中,因此记录被更新或是删除时,同时也需要对存储在目录中的文件进行操作,如移动或删除等。

在上传时,建议先存记录,再存文件至目录中,在删除记录时,顺序应刚好相反,首先删除目录中的文件,然后删除记录。这也不是一定如此。

下面代码演示,在记录更新时,记录的存储目录发生变化,文件也作相应移动。

复制代码 //取得更新记录主键
        strPrimaryKey = gvMedia.DataKeys[e.RowIndex].Value.ToString();
       //类别,文件是随类别存储,如果类别有更新,说明文件存储目录随之改变
        string mediatypeId = ((DropDownList)gvMedia.Rows[e.RowIndex].FindControl("ddlMediaType")).SelectedItem.Value;
       //标题
        string subject = ((TextBox)gvMedia.Rows[e.RowIndex].FindControl("txtSubject")).Text.Trim();
       //说明
        string description = ((TextBox)gvMedia.Rows[e.RowIndex].FindControl("txtDescription")).Text.Trim();
       
        //新目录
        string directory = Mediadirectory + mediatypeId+ "/";

        //如果目录有改变,存储文件也同时移动
        DataRow objDataRow = objMedia.GetFileByPrimaryKey(strPrimaryKey).Rows[0];
        //比较目录是否发生变化,如果不一样,文件也应随目录变化而移动
        if (string.Compare(objDataRow["Directory"].ToString(), directory, true) != 0)
        {
            //旧文件路径
            string o_f = objDataRow["Directory"].ToString() + objDataRow["NewFileName"].ToString();
            //新文件路径
            string n_f = Mediadirectory + mediatypeId + "/" + objDataRow["NewFileName"].ToString();
            //移动文件
            File.Move(Server.MapPath(o_f), Server.MapPath(n_f));
        }

        try
        {
           //更新数据库记录
            objMedia.Update(strPrimaryKey, mediatypeId, subject, description, directory);
            objInsusJsUtility.JsAlert("记录成功更新。");
        }
        catch (Exception ex)
        {
           //抛出异常
            objInsusJsUtility.JsAlert(ex.Message);
        }复制代码

 

接下来,演示删除记录:

复制代码 try
        {
           //取得被删除记录的主键
            strPrimaryKey = gvMedia.DataKeys[e.RowIndex].Value.ToString();
            //取得删除记录
            DataRow objDataRow = objMedia.GetFileByPrimaryKey(strPrimaryKey).Rows[0];
           //取得文件路径
            string f_Name = objDataRow["Directory"].ToString() + objDataRow["NewFileName"].ToString();

            //删除文件
            File.Delete(Server.MapPath(f_Name));
            //删除数据库记录
            objMedia.Delete(strPrimaryKey);
            objInsusJsUtility.JsAlert("记录成功删除。");
        }
        catch (Exception ex)
        {
            //抛出异常
            objInsusJsUtility.JsAlert(ex.Message);
        }复制代码

 

 

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消