首页 > 编程语言 >c# 本地文件上传到服务器

c# 本地文件上传到服务器

时间:2023-12-15 10:27:03浏览次数:39  
标签:string c# true 路径 Flag 传到 StartInfo 服务器 proc

1、先把服务器上的路径设置成共享路径

2、代码如下

    string fileName = "5002356611"; // 替换为你要查找的文件名
    string aaa = @"E:\SAP图片"; // 替换为源文件夹的路径
    string b = @"\\173.1.60.169\test";// 替换成实际的网络路径(该路径必须是共享文件夹)
    var state = ConnectState(b, "账号", "密码");//访问网路共享路径的账号密码

     if (state == false)
     {
            //无法连接服务器
      }
    CopyFileByFileName(fileName, aaa, b);
    string bwer = string.Empty;
    CloseState(b, out bwer);

   bool CopyFileByFileName(string fileName, string sourcePath, string destinationPath)
    {
        string[] matchingFiles = Directory.GetFiles(sourcePath, fileName + ".*");

        if (matchingFiles.Length > 0)
        {
            string sourceFilePath = matchingFiles[0];
            string destinationFilePath = Path.Combine(destinationPath, Path.GetFileName(sourceFilePath));

            CopyFile(sourceFilePath, destinationFilePath);
            
            //Console.WriteLine($"文件已成功从 {sourceFilePath} 复制到 {destinationFilePath}");
        }
        else
        {
            return false;
            // Console.WriteLine($"未找到匹配的文件");
        }
        return true;
    }

    void CopyFile(string sourcePath, string destinationPath)
    {
        File.Copy(sourcePath, destinationPath, true);
    }
    public void CopyFolder(string sourceFolder, string destFolder)
    {
        //如果目标路径不存在,则创建目标路径
        if (!Directory.Exists(destFolder))
        {
            Directory.CreateDirectory(destFolder);
        }
        //得到原文件根目录下的所有文件
        string[] files = Directory.GetFiles(sourceFolder);
        foreach (string file in files)
        {
            string name = Path.GetFileName(file);
            string dest = Path.Combine(destFolder, name);
            File.Copy(file, dest);//复制文件           
                                  //if (files.Count() != 0)
                                  //{
                                  //    progressBar.Value += 1;
                                  //}

        }
        //得到原文件根目录下的所有文件夹
        string[] folders = Directory.GetDirectories(sourceFolder);
        foreach (string folder in folders)
        {
            string name = Path.GetFileName(folder);
            string dest = Path.Combine(destFolder, name);
            CopyFolder(folder, dest);
        }

    }
    /// <summary>
    /// 连接远程共享文件夹
    /// </summary>
    /// <param name="path">远程共享文件夹的路径</param>
    /// <param name="userName">用户名</param>
    /// <param name="passWord">密码</param>
    /// <returns></returns>
    private 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="path">网络路径</param>
    /// <param name="strErr"></param>
    /// <returns></returns>
    public bool CloseState(string path, out string strErr)
    {
        bool Flag = false;
        Process proc = new Process();
        strErr = "";
        try
        {
            proc.StartInfo.WorkingDirectory = Environment.CurrentDirectory;
            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();
            path = "\"" + path + "\"";
            string dosLine = @"net use " + path + " /d /y";
            proc.StandardInput.WriteLine(dosLine);
            proc.StandardInput.WriteLine("exit");
            while (!proc.HasExited)
            {
                proc.WaitForExit(1000);
            }
            string errMsg = proc.StandardError.ReadToEnd();
            proc.StandardError.Close();
            if (string.IsNullOrEmpty(errMsg))
            {
                Flag = true;
            }
            else
            {
                throw new Exception(errMsg);
            }
        }
        catch (Exception ex)
        {
            strErr = ex.Message;
        }
        finally
        {
            proc.Close();
            proc.Dispose();
        }
        return Flag;
    }

 

标签:string,c#,true,路径,Flag,传到,StartInfo,服务器,proc
From: https://www.cnblogs.com/kelenote/p/17902764.html

相关文章

  • Mysql:非全局share的、connect独立分配的内存(及相关参数)说明
     join_buffer_size:sql语句中join连接时候,其中每个表分配的buffer大小。默认256k,最小128byte,最大4G(32位os)。它最大的问题是:立即分配,而不是按需分配! sort_buffer_size:sql语句中的orderby时候,为每个orderby分配的buffer大小。默认256K,最小32K,最大4G(32位os)......
  • 学C笔记归纳 第十四篇——一维数组
    1.什么是数组?        数组是一组相同类型元素的集合。2.数组的创建方式        type_tarr_name[const_n]        type_t            数组的元素类型    arr_name     数组名        const_n   ......
  • ubuntu下完全卸载重装docker教程
    操作需在管理员权限下运行卸载docker1.删除docker的所有包apt-getautoremovedockerdocker-cedocker-enginedocker.iocontainerdrunc2.查看docker是否卸载干净dpkg-l|grepdockerdpkg-l|grep^rc|awk'{print$2}'|sudoxargsdpkg-P3.删除相关插件apt-......
  • decimal插件计算
    import{Decimal}from'decimal.js';//引入exportconstcal={jia(num1,num2){returnnewDecimal(num1).add(newDecimal(num2))},jian(num1,num2){returnnewDecimal(num1).sub(newDecimal(num2))},cheng(num1,num2){returnnewDecimal(num......
  • C++ Qt开发:ProgressBar进度条组件
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍ProgressBar进度条组件的常用方法及灵活运用。ProgressBar(进度条)是在Qt中常用的用户界面组件之一......
  • extract_triton_kernels.py
    importsysfilename=sys.argv[1]withopen(filename,'r')asf:lines=f.readlines()defextract_info(line):line=line.split()name=line[0].strip()self_gpu_time=line[6].strip()num_of_calls=int(line[10].strip())......
  • MacOS - Qt工程转xcode工程
    序言:程序使用Qt开发,程序主要功能是调用摄像头。需要打包成pkg给到用户安装,打包用到的是xcode。一、Qt工程转xcode工程//打开终端,cd到项目根目录(CamScan.pro目录),使用qmake生成xcode工程文件(CamScan.xcodeproj)cd/Users/yangHu/Desktop/CamScan/CamScan/Users/App/Q......
  • v-echarts 使用折线图
    <ve-linestyle="top:-40px"height="100%"width="100%":loading="yearChartLoading":data="yearChartData":extend="chartExtend":legend-visible="false":settings="yearSetting......
  • 界面组件DevExpress VCL v23.2新功能预览 - 支持RAD Studio 12.0
    本文即将发布DevExpressVCL 下一个主要更新(v23.2),在之前的文章中(点击这里回顾>>)我们为大家介绍了新的工具提示、图表空间中的标签重叠等,本文将主要介绍DevExpressVCLv23.2中将支持的RADStudio12.0、增强的图像选择器、字体和自定义图标包等。新版即将发布,敬请期待哦~获取De......
  • C-Kermit AND C-Kermit for Android
    C-KermitforAndroid:http://github.com/tesneddon/ckacka-C-KermitforAndroidThisarchivecontainsthesourcecodeforbu......