C#上传文件到共享文件夹

  • 使用C#上传文件到局域网内共享文件夹

  • 源码如下:
  • 
            public void Main()
            {
                OpenFileDialog openFileDialogTemp = new OpenFileDialog();
                openFileDialogTemp.Title = "选择要上传的图片";
                //openFileDialogTemp.Filter = "*.jpg,*.png,|*.jpg;*.png;";
                DialogResult dr = openFileDialogTemp.ShowDialog();
                if (!File.Exists(openFileDialogTemp.FileName))
                {
                    GLOBALS.msgbox("照片为空,请选择图片");
                    return;
                }
                if (dr == DialogResult.OK)
                {
                    txtFilePath.Text = openFileDialogTemp.FileName;
                    string filePath = this.txtFilePath.Text;
    
                }
                //连接共享文件夹
                bool status = connectState(@"\\IP\uploadImages", "登录名称", "登录密码");
                if (status)
                {
                    //共享文件夹的目录
                    DirectoryInfo theFolder = new DirectoryInfo(@"\\IP\uploadImages\");
                    //获取保存文件的路径
                    string PathName = theFolder.ToString();
                    //执行方法
                    Transport(txtFilePath.Text, PathName, "4.txt");  //上传文件到另一台电脑的共享文件夹,需要设置共享文件夹的权限,共享文件夹不要设在桌面
                    //TransportRemoteToLocal(@"D:\Test2.txt", PathName, "2.txt");  //从另一电脑的共享文件夹下载文件到本机
                }
                else
                {
    
                }
                Console.ReadKey();
            }
  •  
            /// <summary>
            /// 向远程文件夹保存本地内容,或者从远程文件夹下载文件到本地
            /// </summary>
            /// <param name="src">要保存的文件的路径,如果保存文件到共享文件夹,这个路径就是本地文件路径</param>
            /// <param name="dst">保存文件的路径,不含名称及扩展名</param>
            /// <param name="fileName">保存文件的名称以及扩展名</param>
            public static void Transport(string src, string dst, string fileName)
            {
                FileStream inFileStream = new FileStream(src, FileMode.Open);
                if (!Directory.Exists(dst))
                {
                    Directory.CreateDirectory(dst);
                }
                dst = dst + fileName;
    
                if (!File.Exists(dst))
                {
                    FileStream outFileStream = new FileStream(dst, FileMode.Create, FileAccess.Write);
                    byte[] buf = new byte[inFileStream.Length];
                    int byteCount;
                    while ((byteCount = inFileStream.Read(buf, 0, buf.Length)) > 0)
                    {
                        outFileStream.Write(buf, 0, byteCount);
                    }
                    inFileStream.Flush();
                    inFileStream.Close();
                    outFileStream.Flush();
                    outFileStream.Close();
                }
            }
  •         /// <summary>
            /// 连接共享文件
            /// </summary>
            /// <param name="path">共享文件地址</param>
            /// <param name="userName">用户名</param>
            /// <param name="passWord">密码</param>
            /// <returns>true:连接成功 false:连接失败</returns>
            public static bool connectState(string path, string userName, string passWord)
            {
                bool Flag = false;
                Process proc = new Process();
                try
                {
                    proc.StartInfo.FileName = "cmd.exe";
                    proc.StartInfo.UseShellExecute = false;
                    proc.StartInfo.RedirectStandardInput = true;
                    proc.StartInfo.RedirectStandardOutput = true;
                    proc.StartInfo.RedirectStandardError = true;
                    proc.StartInfo.CreateNoWindow = true;
                    proc.Start();
                    string dosLine = "net use " + path + " " + passWord + " /user:" + userName;
                    proc.StandardInput.WriteLine(dosLine);
                    proc.StandardInput.WriteLine("exit");
                    while (!proc.HasExited)
                    {
                        proc.WaitForExit(1000);
                    }
                    string errormsg = proc.StandardError.ReadToEnd();
                    proc.StandardError.Close();
                    if (string.IsNullOrEmpty(errormsg))
                    {
                        Flag = true;
                    }
                    else
                    {
                        throw new Exception(errormsg);
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    proc.Close();
                    proc.Dispose();
                }
                return Flag;
            }
  •  
            /// <summary>
            /// 从远程服务器下载文件到本地
            /// </summary>
            /// <param name="src">下载到本地后的文件路径,包含文件的扩展名</param>
            /// <param name="dst">远程服务器路径(共享文件夹路径)</param>
            /// <param name="fileName">远程服务器(共享文件夹)中的文件名称,包含扩展名</param>
            public static void TransportRemoteToLocal(string src, string dst, string fileName)   //src:下载到本地后的文件路径  dst:远程服务器路径 fileName:远程服务器dst路径下的文件名
            {
                if (!Directory.Exists(dst))
                {
                    Directory.CreateDirectory(dst);
                }
                dst = dst + fileName;
                FileStream inFileStream = new FileStream(dst, FileMode.Open);    //远程服务器文件  此处假定远程服务器共享文件夹下确实包含本文件,否则程序报错
                FileStream outFileStream = new FileStream(src, FileMode.OpenOrCreate);   //从远程服务器下载到本地的文件
                byte[] buf = new byte[inFileStream.Length];
                int byteCount;
                while ((byteCount = inFileStream.Read(buf, 0, buf.Length)) > 0)
                {
                    outFileStream.Write(buf, 0, byteCount);
                }
                inFileStream.Flush();
                inFileStream.Close();
                outFileStream.Flush();
                outFileStream.Close();
    
            }

  •  

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值