c# 实现文件上传下载功能的实例代码

所属分类: 软件编程 / C#教程 阅读数: 84
收藏 0 赞 0 分享

NuGet 安装SqlSugar

1.Model文件下新建 DbContext 类

 public class DbContext
  {
    public DbContext()
    {
      Db = new SqlSugarClient(new ConnectionConfig()
      {
        ConnectionString = "server=localhost;uid=root;pwd=woshishui;database=test",
        DbType = DbType.MySql,
        InitKeyType = InitKeyType.Attribute,//从特性读取主键和自增列信息
        IsAutoCloseConnection = true,//开启自动释放模式和EF原理一样我就不多解释了
    });
    //调式代码 用来打印SQL 
    Db.Aop.OnLogExecuting = (sql, pars) =>
    {
      Console.WriteLine(sql + "\r\n" +
               Db.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value)));
      Console.WriteLine();
    };

  }
  //注意:不能写成静态的,不能写成静态的
  public SqlSugarClient Db;//用来处理事务多表查询和复杂的操作
  public SimpleClient<uploading> uploadingdb { get { return new SimpleClient<uploading>(Db); } }//用来处理Student表的常用操作
}

2.建uploading实体类

[SugarTable("uploading")]
  public class uploading
  {
  //指定主键和自增列,当然数据库中也要设置主键和自增列才会有效
  [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
  public int id { get; set; }
  public string name { get; set; }
  public string path { get; set; }
}

3.Manager文件下建UploadingManager

 class UploadingManager : DbContext
  {
    public List<uploading> Query()
    {
      try
      {
        List<uploading> data = Db.Queryable<uploading>()
          .Select(f => new uploading
          {
            name = f.name,
            path = f.path
          })
          .ToList();
        return data;
      }
      catch (Exception e)
      {
        Console.WriteLine(e);
        throw;
      }
  }

  public List&lt;string&gt; GetName(string name)
  {
    List&lt;string&gt; data = Db.Queryable&lt;uploading&gt;()
      .Where(w=&gt;w.name== name)
      .Select(f =&gt; f.path)
      .ToList();
    return data;

  }
}

窗体加载Form1_Load

1.读取到数据库字段name并赋值

 private void Form1_Load(object sender, EventArgs e)
    {
      List<uploading> data = uploading.Query();
      foreach (var data1 in data)
      {
        comboBox1.Items.Add(data1.name);
      }
      comboBox1.SelectedIndex = 0;
  }

2.comboBox事件触发条件查询到上传的path

 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
      List<string> data = uploading.GetName(comboBox1.Text);
    for (int i = 0; i &lt; data.Count; i++)
    {
      textBox1.Text = data[0];
    }
  }

3.上传事件触发

 private void Button1_Click(object sender, EventArgs e)
    {
       string path = textBox1.Text;
      CopyDirs(textBox3.Text,
        path);
    }
 private void CopyDirs(string srcPath, string aimPath)
    {
      try
      {
        // 检查目标目录是否以目录分割字符结束如果不是则添加
        if (aimPath[aimPath.Length - 1] != System.IO.Path.DirectorySeparatorChar)
        {
          aimPath += System.IO.Path.DirectorySeparatorChar;
        }
      // 判断目标目录是否存在如果不存在则新建
      if (!System.IO.Directory.Exists(aimPath))
      {
        System.IO.Directory.CreateDirectory(aimPath);
      }

      // 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组
      // 如果你指向copy目标文件下面的文件而不包含目录请使用下面的方法
      // string[] fileList = Directory.GetFiles(srcPath);
      string[] fileList = System.IO.Directory.GetFileSystemEntries(srcPath);
      // 遍历所有的文件和目录
      foreach (string file in fileList)
      {
        // 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件
        if (System.IO.Directory.Exists(file))
        {
          CopyDir(file, aimPath + System.IO.Path.GetFileName(file));

          DisplaylistboxMsg(&quot;上传成功&quot;);
        }
        // 否则直接Copy文件
        else
        {
          System.IO.File.Copy(file, aimPath + System.IO.Path.GetFileName(file), true);
          DisplaylistboxMsg(&quot;上传成功&quot;);
        }
      }
    }
    catch (Exception e)
    {
      DisplaylistboxMsg(&quot;上传失败&quot; + e.Message);
    }
  }

4.下载事件触发

private void Button2_Click(object sender, EventArgs e)
    {
      CopyDir(@"\\10.55.2.3\mech_production_line_sharing\Test\" + textBox2.Text, textBox4.Text);
    }
private void CopyDir(string srcPath, string aimPath)

{

// 检查目标目录是否以目录分割字符结束如果不是则添加

if (aimPath[aimPath.Length - 1] != System.IO.Path.DirectorySeparatorChar)

{

aimPath += System.IO.Path.DirectorySeparatorChar;

}

    // 判断目标目录是否存在如果不存在则新建
    if (!System.IO.Directory.Exists(aimPath))
    {
      System.IO.Directory.CreateDirectory(aimPath);
    }

    // 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组
    // 如果你指向copy目标文件下面的文件而不包含目录请使用下面的方法
    // string[] fileList = Directory.GetFiles(srcPath);
    string[] fileList = System.IO.Directory.GetFileSystemEntries(srcPath);
    // 遍历所有的文件和目录
    foreach (string file in fileList)
    {
      // 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件
      if (System.IO.Directory.Exists(file))
      {
        CopyDir(file, aimPath + System.IO.Path.GetFileName(file));
        DisplaylistboxMsg(&quot;下载成功&quot;);
      }
      // 否则直接Copy文件
      else
      {
        System.IO.File.Copy(file, aimPath + System.IO.Path.GetFileName(file), true);
        DisplaylistboxMsg(&quot;下载成功&quot;);
      }
    }
  }

以上就是c# 实现文件上传下载功能的实例代码的详细内容,更多关于c# 实现文件上传下载的资料请关注脚本之家其它相关文章!

更多精彩内容其他人还在看

C#获取并修改文件扩展名的方法

这篇文章主要介绍了C#获取并修改文件扩展名的方法,实例分析了C#编程方式修改文件扩展名的技巧,涉及Path类的使用方法,需要的朋友可以参考下
收藏 0 赞 0 分享

C#遍历操作系统下所有驱动器的方法

这篇文章主要介绍了C#遍历操作系统下所有驱动器的方法,涉及C#中DriveInfo类GetDrivers方法的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#遍历指定目录下所有文件的方法

这篇文章主要介绍了C#遍历指定目录下所有文件的方法,实例分析了C#中GetFiles()方法遍历文件的使用技巧,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#拷贝文件简单实现方法

这篇文章主要介绍了C#拷贝文件简单实现方法,主要分析了FileInfo类中CopyTo方法针对文件复制的操作技巧,非常简单实用,需要的朋友可以参考下
收藏 0 赞 0 分享

C#获取文件相关信息的方法

这篇文章主要介绍了C#获取文件相关信息的方法,涉及C#中FileInfo类的相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#交错数组用法实例

这篇文章主要介绍了C#交错数组用法,较为详细的分析了交错数组的概念、用法并实例分析了交错数组的使用技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

C#实现在前端网页弹出警告对话框(alert)的方法

这篇文章主要介绍了C#实现在前端网页弹出警告对话框(alert)的方法,涉及C#通过自定义函数调用window.alert方法弹出对话框的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#实现控制Windows系统关机、重启和注销的方法

这篇文章主要介绍了C#实现控制Windows系统关机、重启和注销的方法,涉及C#调用windows系统命令实现控制开机、关机等操作的技巧,非常简单实用,需要的朋友可以参考下
收藏 0 赞 0 分享

C#读取Excel并转化成XML的方法

这篇文章主要介绍了C#读取Excel并转化成XML的方法,实例分析了C#操作Excel及XML文件的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#创建一个Word并打开的方法

这篇文章主要介绍了C#创建一个Word并打开的方法,实例分析了C#操作word的常用技巧,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多