zoukankan      html  css  js  c++  java
  • 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);
            }
  • 相关阅读:
    【转】 linux iio子系统
    【转】eclipse -- the project was not built due to a resource exists with a different case...
    Android常用的一些make命令(转载)--不错
    【转】Android Recovery模式
    chain rule 到 Markov chain
    chain rule 到 Markov chain
    贝叶斯统计(Bayesian statistics) vs 频率统计(Frequentist statistics):marginal likelihood(边缘似然)
    贝叶斯统计(Bayesian statistics) vs 频率统计(Frequentist statistics):marginal likelihood(边缘似然)
    企业文化与发展战略
    企业文化与发展战略
  • 原文地址:https://www.cnblogs.com/insus/p/1986156.html
Copyright © 2011-2022 走看看