Asp.net移动或删除文件

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

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

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

  // 取得更新记录主键
        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);
        }

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值