C#做MES中FTP代码怎么写?客户端,服务端如何安装测试?

一、介绍FTP免费开源软件

1:FileZilla是一个免费开源的FTP软件,分为客户端版本和服务器版本,且具备所有的FTP软件功能。具有可控性,有条理的界面和管理多站点的简化方式,是的Filezilla客户端版本成为一个方便高效的FTP客户端工具,而Filezilla服务端版本则是一个小巧并且可靠支持FTP&SFTP的FTP服务器软件

二、客户端,服务端下载网址

1:下载网址:https://filezilla-project.org/

三、安装软件

1:服务端机器:FillaZilla Server端下载

2:客户端机器:FillaZilla客户端下载

四:注意事项

1:使用需要关闭防火墙开启FTP的默认21端口

2:需要注意的是客户端和服务器必须是两台不同的电脑,并且,ip地址处于同一个网段,比如ftp服务器的ip为192.168.1.100,ftp客户端的Ip为192.168.1.101

五:编码格式的介绍

常见的编码格式包括:ASCII、Unicode、UTF-8、GB2312、GB18030、UTF-16 和 ANSI。

ASCII

ASCII是一种通用的编码格式,用于表示和传输文本数据。它使用7位二进制数表示字符,总共可以表示128个字符,包括大小写英文字母、数字和一些符号。

Unicode

Unicode是一种多语言编码格式,用于表示和传输各种语言的文本数据。它是一种统一的字符编码标准,旨在为世界上所有的字符提供编码。Unicode编码范围是0x0000至0x10FFFF,包括基本多文种平面(BMP)和补充多文种平面(SMP)。

UTF-8

UTF-8是一种变长编码格式,用于表示和传输Unicode文本数据。它可以表示和传输各种语言的文本数据。在UTF-8中,字符是以8位序列来编码的,用一个或几个字节来表示一个字符。这种方式的最大好处是UTF-8保留了ASCII字符的编码作为它的一部分。

GB2312

GB2312是一种中文编码格式,用于表示和传输中文文本数据。它是一种双字节编码,总的编码范围是A1-F7,其中从A1-A9是符号区,总共包含682个符号,从B0-F7是汉字区,包含6763个汉字。

GB18030

GB18030是一种宽字符集编码格式,用于表示和传输中文文本数据。它是中国国家标准化管理委员会发布的一种汉字编码标准,兼容GB2312和GBK,并增加了对更多汉字和符号的支持。

UTF-16

UTF-16是一种变长编码格式,用于表示和传输Unicode文本数据。它使用两个字节来表示Unicode转化格式,这是定长的表示方法,不论什么字符都可以用两个字节表示。

ANSI

ANSI是一种美国国家标准协会制定的编码格式,用于表示和传输美国英语文本数据。它是针对不同操作系统和编程环境的一系列编码标准,通常指的是Windows-1252编码,它是一个单字节编码,涵盖了拉丁字母和一些控制字符

六、防火墙如何关闭

1:打开控制面板

3187dd3329e14a678a8e64112ffe9bed.png

eab6e44e9ced4cdf8f7e0dfde089c1c6.png

bd702ca6e21e47ec99f0b320e3dd3c0d.png02f7da8b366e4d73bd5da1aba2b04880.png

七、FTP服务端的安装方式

1:安装软件(使用前关闭防火墙,否则连接不上)

1c5512172ab54382880fc7979ca35041.png

9af8422ede414ace873d2c32f99747cd.png

0d9fe535dad242caac2373b8141e96be.png

 df99c555fb374b18b93e5587c8af6513.png

196f3aec410749c7896e27bf42c556e9.png

fb718c24845846fbbf837a18c8604c28.png

 a63820872f7e4e3d97c48ad6de198083.png

2:8:出现You appear to be behind a NAT router. Please configure the passive mode settings and forward a range of ports in your router.情况,可手动修改服务器IP地址解决,出现Warning: FTP over TLS is not enabled, users cannot securely log in.情况,可忽略不管,这是安全警告 

d0b6267979514cae82c1227c66db899e.png 3:解决上述问题操作步骤 编辑->设置->被动模式设置->使用下列IP(cmb命令ipconfig查询本机ip地址)->确定

5238cb58100042c291e07d7aee4b8ceb.png f4fcb8fb59e549949c414cfa52af004f.png

4:10:设置用户和密码,以及共享文件夹(用于客户端访问) 

60bad25307b242129003fd274e1d63ce.png

cd9fbca2d0bb427ab5d269913e135ee8.png

e5005b4cb83a4f348008dc33367827f2.png b6039d15537046ad87024cb442a7bd11.png

 8dc0142f67af41c1b5e2853a67a1257c.png

51ec47706b4c483f830624af09fb909d.png八:FTP客户端的安装

1:安装软件(使用前关闭防火墙,否则连接不上) 

6880793ae10d4543beb87f34285e364d.png

d863d8a0e12041a4916da94f3c2d367f.png

41eb2b8134464f23aa53f67ea5e99b45.png

1d6ca7fc38184a77b33c1b1e7092ccab.png

46d421f17b3549369dead3f2b7579910.png

d34940dbbea34ae7990df39ef3e0a6b2.png

c94ede74b76241c1ae4c0492ee469071.png

1d22981d8ac245f6a5f249d0e3f082ff.png f09d2a34e30a4a60afa8ece80523f9fa.png

8946922d37d74c3a8896f4028270f3bc.png 2:显示如下,链接成功

077a12527a5a48ba90074127a2a9175a.png

3:也可通过浏览器测试,通过服务器ip地址搜索,添加服务器账号密码 

fb3eab65d0a74bffa24079615ca602ac.png

九、C#代码编写类如下 

1:

 #region 上传单个文件到FTP服务器
        /// <summary>
        /// 上传单个文件到FTP服务器
        /// </summary>
        /// <param name="ftpFileDirectory">FTP服务器子目录文件夹</param>   //没有子目录文件夹传"/"即可,有子目录文件夹传"/"+文件名+"/"
        /// <param name="localFullPathName">客户端本地要上传的文件全路径</param>
        /// <param name="ftpHost">FTP服务器主机名或者ip地址</param>
        /// <param name="ftpUserID">FTP服务器添加允许访问的用户名</param>
        /// <param name="ftpPassword">FTP服务器添加允许访问的用户密码</param>
        /// <param name="updateProgress">报告进度的处理(第一个参数:总大小,第二个参数:当前进度)</param>
        /// <returns>是否上传成功</returns>z
        public static bool UploadFileToFtp(string ftpFileDirectory, string localFileFullPathName, string ftpHost, string ftpUserID, string ftpPassword, Action<int, int> updateProgress = null)
        {
            if (ftpHost == null || ftpHost.Trim().Length == 0)
            {
                throw new Exception("ftp上传目标服务器地址未设置!");
            }
            FtpWebResponse FtpResponse = null;
            try
            {
                FileInfo finfo = new FileInfo(localFileFullPathName);
                string ftpUri = @"ftp://" + ftpHost + ftpFileDirectory;//FTP服务器链接路径(即服务器下的哪个文件夹,没有指定文件夹传"/"即可)
                Uri uri = new Uri(ftpUri);
                FtpWebRequest FtpRequest = (FtpWebRequest)FtpWebRequest.Create(uri + finfo.Name);
                FtpRequest.KeepAlive = true;//该值指定在请求完成之后是否关闭到 FTP 服务器的控制连接
                FtpRequest.UseBinary = true;//true,指示服务器要传输的是二进制数据;false,指示数据为文本
                FtpRequest.Credentials = new NetworkCredential(ftpUserID, ftpPassword);//用户,密码
                FtpRequest.Method = WebRequestMethods.Ftp.UploadFile;//向服务器发出上传文件请求命令
                FtpRequest.ContentLength = finfo.Length;//告诉FTP服务器指定上传文件的大小,以byte类型计数
                FtpResponse = FtpRequest.GetResponse() as FtpWebResponse;//FTP服务端响应对象
                const int BufferSize = 2048;//设置缓冲大小
                byte[] buff = new byte[BufferSize];
                //进度条更新进度 
                int allbye = (int)finfo.Length; //文件字节总数             
                if (updateProgress != null)
                {
                    updateProgress((int)allbye, 0);
                }
                int dataRead = 0;
                int starByte = 0;
                using (FileStream fileStream = finfo.OpenRead())//文件流读取需上传的文件
                {
                    try
                    {
                        using (Stream stream = FtpRequest.GetRequestStream())//把上传文件写入流
                        {
                            do
                            {
                                dataRead = fileStream.Read(buff, 0, BufferSize);//每次读文件流2KB
                                if (dataRead > 0)
                                {
                                    stream.Write(buff, 0, dataRead);//写入流根据文件流读取的字节个数将缓存区字节写入
                                }
                                //更新进度条 
                                starByte = dataRead + starByte;//读取总的字节数
                                if (updateProgress != null)
                                {
                                    updateProgress((int)allbye, (int)starByte);
                                }

                            } while (dataRead >= BufferSize);
                            stream.Close();//关闭流
                        }
                    }
                    catch (Exception)
                    {
                        return false;
                    }
                    finally
                    {
                        fileStream.Close();//关闭文件流
                        if (FtpResponse != null)
                        {
                            FtpResponse.Close();
                        }
                    }
                }
                return true;
            }
            catch (Exception)
            {
                return false;
            }
            finally
            {
                if (FtpResponse != null)
                {
                    FtpResponse.Close();
                }
            }
        }
        #endregion

2:

#region 判断某个文件是否存在
        /// <summary>
        /// 判断某个文件是否存在
        /// </summary>
        /// <param name="ftpFileDirectory">FTP服务器子目录文件夹</param>  //FTP服务器链接路径(即服务器下的哪个文件夹,没有指定文件夹传"/"
        /// <param name="FtpfileName">文件名,不包含路径</param>
        /// <param name="ftpHost">FTP服务器主机名或者ip地址</param>
        /// <param name="ftpUserID">FTP服务器添加允许访问的用户名</param>
        /// <param name="ftpPassword">FTP服务器添加允许访问的用户密码</param>
        /// <param name="errorMessage">返回错误信息</param>
        /// <returns>返回文件是否存在,true存在,否则不存在</returns>
        public static bool CheckFileExist(string ftpFileDirectory, string FtpfileName, string ftpHost, string ftpUserID, string ftpPassword, out string errorMessage)
        {
            bool result = false;
            errorMessage = string.Empty;
            if (ftpHost == null || ftpHost.Trim().Length == 0)
            {
                throw new Exception("ftp上传目标服务器地址未设置!");
            }
            try
            {
                string ftpUri = @"ftp://" + ftpHost + ftpFileDirectory;//FTP服务器链接路径(即服务器下的哪个文件夹,没有指定文件夹传"/"即可)
                Uri uri = new Uri(ftpUri);
                FtpWebRequest FtpRequest = (FtpWebRequest)FtpWebRequest.Create(uri);
                FtpRequest.KeepAlive = true;//该值指定在请求完成之后是否关闭到 FTP 服务器的控制连接
                FtpRequest.UseBinary = true;//true,指示服务器要传输的是二进制数据;false,指示数据为文本
                FtpRequest.Credentials = new NetworkCredential(ftpUserID, ftpPassword);//用户,密码
                FtpRequest.Method = WebRequestMethods.Ftp.ListDirectory;//向服务器发出文件夹集合请求命令
                using (WebResponse webResponse = FtpRequest.GetResponse())
                {
                    using (StreamReader streamReader = new StreamReader(webResponse.GetResponseStream(), Encoding.GetEncoding("GB2312")))
                    {
                        string fileName = streamReader.ReadLine();
                        while (fileName != null)
                        {
                            if (fileName == FtpfileName)
                            {
                                result = true;
                                break;
                            }
                            fileName = streamReader.ReadLine();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                errorMessage = ex.Message;
            }
            return result;
        }
        #endregion

3;

 #region 删除单个文件
        /// <summary>
        /// 删除单个文件
        /// </summary>
        /// <param name="ftpFileDirectory">FTP服务器子目录文件夹</param>//FTP服务器链接路径(即服务器下的哪个文件夹,没有指定文件夹传"/"
        /// <param name="FtpfileName">要删除FTP服务器文件名,不包含路径</param>
        /// <param name="ftpHost">FTP服务器主机名或者ip地址</param>
        /// <param name="ftpUserID">FTP服务器添加允许访问的用户名</param>
        /// <param name="ftpPassword">FTP服务器添加允许访问的用户密码</param>
        /// <param name="errorMessage">返回错误信息</param>
        /// <returns>返回是否删除成功,true存成功,否则失败</returns>
        public static bool DeleteFileFromFtp(string ftpFileDirectory, string FtpfileName, string ftpHost, string ftpUserID, string ftpPassword)
        {
            bool result = false;
            
            if (ftpHost == null || ftpHost.Trim().Length == 0)
            {
                throw new Exception("ftp上传目标服务器地址未设置!");
            }
            try
            {
                string ftpUri = @"ftp://" + ftpHost + ftpFileDirectory + FtpfileName;//FTP服务器链接路径(即服务器下的哪个文件夹,没有指定文件夹传"/"即可)
                Uri uri = new Uri(ftpUri);
                FtpWebRequest FtpRequest = (FtpWebRequest)FtpWebRequest.Create(uri);
                FtpRequest.KeepAlive = false;//该值指定在请求完成之后是否关闭到 FTP 服务器的控制连接
                FtpRequest.UseBinary = true;//true,指示服务器要传输的是二进制数据;false,指示数据为文本
                FtpRequest.Credentials = new NetworkCredential(ftpUserID, ftpPassword);//用户,密码
                FtpRequest.Method = WebRequestMethods.Ftp.DeleteFile;//向服务器发出删除文件请求命令
                using (FtpWebResponse FtpResponse = FtpRequest.GetResponse() as FtpWebResponse)
                {
                    if (FtpResponse.StatusCode == FtpStatusCode.FileActionOK)
                    {
                        result = true;
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return result;
        }
        #endregion

4:

 #region 从FTP服务器下载单个文件
        /// <summary>
        /// 从FTP服务器下载单个文件
        /// </summary>
        /// <param name="ftpFileDirectory">FTP服务器子目录文件夹</param>
        /// <param name="FtpfileName">要下载文件名,不包含路径</param>
        /// <param name="localFileFullPathName">下载到本地的的文件全路径,文件名可以和服务器文件名不一样</param>
        /// <param name="ftpHost">FTP服务器主机名或者ip地址</param>
        /// <param name="ftpUserID">FTP服务器添加允许访问的用户名</param>
        /// <param name="ftpPassword">FTP服务器添加允许访问的用户密码</param>
        /// <param name="errorMessage">返回错误信息</param>
        /// <returns>返回是否下载成功,true存成功,否则失败</returns>
        public static bool DownLoadFileFromFtpDirectory(string ftpFileDirectory, string FtpfileName, string localFileFullPathName, string ftpHost, string ftpUserID, string ftpPassword)
        {
            FtpWebResponse FtpResponse = null;
            bool result = false;        
            if (ftpHost == null || ftpHost.Trim().Length == 0)
            {
                throw new Exception("ftp上传目标服务器地址未设置!");
            }
            try
            {
                string ftpUri = @"ftp://" + ftpHost + ftpFileDirectory + FtpfileName;//FTP服务器链接路径(即服务器下的哪个文件夹,没有指定文件夹传"/"即可)
                Uri uri = new Uri(ftpUri);
                FtpWebRequest FtpRequest = (FtpWebRequest)FtpWebRequest.Create(uri);
                FtpRequest.KeepAlive = false;//该值指定在请求完成之后是否关闭到 FTP 服务器的控制连接
                FtpRequest.UseBinary = true;//true,指示服务器要传输的是二进制数据;false,指示数据为文本
                FtpRequest.Credentials = new NetworkCredential(ftpUserID, ftpPassword);//用户,密码
                FtpRequest.Method = WebRequestMethods.Ftp.DownloadFile;//向服务器发出下载文件请求命令
                FtpResponse = FtpRequest.GetResponse() as FtpWebResponse;//FTP服务端响应对象
                const int BufferSize = 2048;//设置缓冲大小
                byte[] buff = new byte[BufferSize];
                int dataRead = 0;
                using (FileStream fileStream = new FileStream(localFileFullPathName, FileMode.Create))//创建流文件
                {
                    using (Stream stream = FtpResponse.GetResponseStream())//把响应的文件写入流
                    {
                        do
                        {
                            dataRead = stream.Read(buff, 0, BufferSize);//每次读文件流2KB
                            if (dataRead > 0)
                            {
                                fileStream.Write(buff, 0, dataRead);//写入流根据文件流读取的字节个数将缓存区字节写入
                            }
                        } while (dataRead >= BufferSize);                       
                        result = true;
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                if (FtpResponse != null)
                {
                    FtpResponse.Close();
                }
            }
            return result;
        }
        #endregion     

5:

 #region 获取Ftp服务器指定目录下的所有文件名
        /// <summary>
        /// 获取Ftp服务器指定目录下的所有文件名
        /// </summary>
        /// <param name="ftpFileDirectory">FTP服务器子目录文件夹</param>
        /// <param name="ftpHost">FTP服务器主机名或者ip地址</param>
        /// <param name="ftpUserID">FTP服务器添加允许访问的用户名</param>
        /// <param name="ftpPassword">FTP服务器添加允许访问的用户密码</param>
        /// <returns></returns>
        public static List<string> GetAllFileNameFromFtpDirectory(string ftpFileDirectory, string ftpHost, string ftpUserID, string ftpPassword)
        {
            if (ftpHost == null || ftpHost.Trim().Length == 0)
            {
                throw new Exception("ftp上传目标服务器地址未设置!");
            }
            List<string> fileNameList = new List<string>();
            try
            {
                string ftpUri = @"ftp://" + ftpHost + ftpFileDirectory;//FTP服务器链接路径(即服务器下的哪个文件夹,没有指定文件夹传"/"即可)
                Uri uri = new Uri(ftpUri);
                FtpWebRequest FtpRequest = (FtpWebRequest)FtpWebRequest.Create(uri);
                FtpRequest.KeepAlive = false;//该值指定在请求完成之后是否关闭到 FTP 服务器的控制连接
                FtpRequest.UseBinary = true;//true,指示服务器要传输的是二进制数据;false,指示数据为文本
                FtpRequest.Credentials = new NetworkCredential(ftpUserID, ftpPassword);//用户,密码
                FtpRequest.Method = WebRequestMethods.Ftp.ListDirectory;//向服务器发出下载文件请求命令
                using (FtpWebResponse FtpResponse = FtpRequest.GetResponse() as FtpWebResponse)
                {
                    using (StreamReader streamReader = new StreamReader(FtpResponse.GetResponseStream(), Encoding.UTF8))//编码格式需要根据服务器编码格式来设定
                    {
                        string fileName = streamReader.ReadLine();
                        while (fileName != null)
                        {
                            fileNameList.Add(fileName);
                            fileName = streamReader.ReadLine();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return fileNameList;
        }
6:

 #region 下载指定目录下的所有文件
        /// <summary>
        /// 下载指定目录下的所有文件
        /// </summary>
        /// <param name="ftpFileDirectory">FTP服务器子目录文件夹</param>
        /// <param name="localFullPathDirectory">本地要存放文件的文件夹全路径</param>
        /// <param name="ftpHost">FTP服务器主机名或者ip地址</param>
        /// <param name="ftpUserID">FTP服务器添加允许访问的用户名</param>
        /// <param name="ftpPassword">FTP服务器添加允许访问的用户密码</param>
        /// <returns></returns>
        public static bool DownLoadAllFileFromFtpDirectory(string ftpFileDirectory, string localFullPathDirectory, string ftpHost, string ftpUserID, string ftpPassword)
        {
            bool result = true;        

            if (ftpHost == null || ftpHost.Trim().Length == 0)
            {
                throw new Exception("ftp上传目标服务器地址未设置!");
            }
            try
            {
                List<string> downLocalFileName = GetAllFileNameFromFtpDirectory(ftpFileDirectory, ftpHost, ftpUserID, ftpPassword);
                if (downLocalFileName.Count > 0)
                {
                    for (int i = 0; i < downLocalFileName.Count; i++)
                    {
                        string localFullPathName = Path.Combine(localFullPathDirectory, downLocalFileName[i]);//将文件夹全路径和文件名合并一个文件的全路径
                        result&= DownLoadFileFromFtpDirectory(ftpFileDirectory, downLocalFileName[i], localFullPathName, ftpHost, ftpUserID, ftpPassword );
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return result;
        }
        #endregion

7:

 #region FTP服务器创建多级文件夹
        /// <summary>
        ///  FTP服务器创建目录,只能创建一级目录,要一层层创建,否则会出错
        /// </summary>
        /// <param name="ftpFullPathDirectory">所要创建的文件夹路径,包括一级文件夹,二级文件夹等</param>
        /// <param name="ftpHost">FTP服务器主机名或者ip地址</param>
        /// <param name="ftpUserID">FTP服务器添加允许访问的用户名</param>
        /// <param name="ftpPassword">FTP服务器添加允许访问的用户密码</param>
        /// <returns></returns>
        public static bool CreatDirectoryToFtp(string ftpFullPathDirectory, string ftpHost, string ftpUserID, string ftpPassword)
        {
            bool result = false;            
            if (ftpHost == null || ftpHost.Trim().Length == 0)
            {
                throw new Exception("ftp上传目标服务器地址未设置!");
            }
            string[] DirectoryArray = ftpFullPathDirectory.Split('/'); //用 '/'分割成多个文件夹名称 ,例如/FTP   ,用"/"分割后是两个string类型数组,第一个是"",第二个是FTP        
            for (int i = 0; i < DirectoryArray.Length-1; i++)
            {
                string[] dirArray = new string[i + 2];
                Array.Copy(DirectoryArray, dirArray, dirArray.Length);
                string DirectoryPath = string.Join("/", dirArray);
                try
                {
                    string ftpUri = @"ftp://" + ftpHost + DirectoryPath;
                    Uri uri = new Uri(ftpUri);
                    FtpWebRequest FtpRequest = (FtpWebRequest)FtpWebRequest.Create(uri);
                    FtpRequest.KeepAlive = true;//该值指定在请求完成之后是否关闭到 FTP 服务器的控制连接
                    FtpRequest.UseBinary = true;//true,指示服务器要传输的是二进制数据;false,指示数据为文本
                    FtpRequest.Credentials = new NetworkCredential(ftpUserID, ftpPassword);//用户,密码
                    FtpRequest.Method = WebRequestMethods.Ftp.MakeDirectory;//向服务器发出创建文件夹请求命令
                    FtpWebResponse FtpResponse = FtpRequest.GetResponse() as FtpWebResponse;//FTP服务端响应对象
                    if (FtpResponse.StatusCode == FtpStatusCode.PathnameCreated)
                    {
                        result = true;
                    }
                    if (FtpResponse != null)
                    {
                        FtpResponse.Close();
                    }

                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                               
                }
            }
            return result;
        }
        #endregion

8:

 #region 删除FTP服务器目录
        /// <summary>
        ///  删除FTP服务器目录
        /// </summary>
        /// <param name="ftpFullPathDirectory">创建的文件夹路径,包括一级文件夹,二级文件夹等</param>
        /// <param name="ftpHost">FTP服务器主机名或者ip地址</param>
        /// <param name="ftpUserID">FTP服务器添加允许访问的用户名</param>
        /// <param name="ftpPassword">FTP服务器添加允许访问的用户密码</param>
        /// <returns></returns>
        public static bool DeleteDirectory(string ftpFullPathDirectory, string ftpHost, string ftpUserID, string ftpPassword)
        {
            bool result = false;           
            try
            {
                string ftpUri = @"ftp://" + ftpHost+ ftpFullPathDirectory;
                Uri uri = new Uri(ftpUri);
                FtpWebRequest FtpRequest = (FtpWebRequest)FtpWebRequest.Create(uri);
                FtpRequest.KeepAlive = true;//该值指定在请求完成之后是否关闭到 FTP 服务器的控制连接
                FtpRequest.UseBinary = true;//true,指示服务器要传输的是二进制数据;false,指示数据为文本
                FtpRequest.Credentials = new NetworkCredential(ftpUserID, ftpPassword);//用户,密码
                FtpRequest.Method = WebRequestMethods.Ftp.RemoveDirectory;//向服务器发出删除文件夹请求命令
                FtpWebResponse FtpResponse = FtpRequest.GetResponse() as FtpWebResponse;//FTP服务端响应对象
                if (FtpResponse.StatusCode == FtpStatusCode.FileActionOK)
                {
                    result = true;
                }
                if (FtpResponse != null)
                {                   
                    FtpResponse.Close();
                }
            }
            catch (Exception ex) 
            {
                throw new Exception(ex.Message);
            }
            return result;
        }
        #endregion

9:

 #region 重命名FTP文件
        /// <summary>
        /// 重命名FTP文件
        /// </summary>
        /// <param name="ftpFileFullPath"></param>
        /// <param name="FtpNewfileName"></param>
        /// <param name="ftpHost"></param>
        /// <param name="ftpUserID"></param>
        /// <param name="ftpPassword"></param>
        /// <returns></returns>
        public static bool RenameFile(string ftpFileFullPath, string FtpNewfileName, string ftpHost, string ftpUserID, string ftpPassword)
        {
            bool result = false;            
            try
            {
                string ftpUri = @"ftp://" + ftpHost + ftpFileFullPath;//FTP服务器链接路径(即服务器下的哪个文件夹,没有指定文件夹传"/"即可)
                Uri uri = new Uri(ftpUri);
                FtpWebRequest FtpRequest = (FtpWebRequest)FtpWebRequest.Create(uri);
                FtpRequest.KeepAlive = false;//该值指定在请求完成之后是否关闭到 FTP 服务器的控制连接
                FtpRequest.UseBinary = true;//true,指示服务器要传输的是二进制数据;false,指示数据为文本
                FtpRequest.Credentials = new NetworkCredential(ftpUserID, ftpPassword);//用户,密码
                FtpRequest.Method = WebRequestMethods.Ftp.Rename;//向服务器发出重命名请求命令
                FtpRequest.RenameTo = FtpNewfileName;
                FtpWebResponse FtpResponse = FtpRequest.GetResponse() as FtpWebResponse;//FTP服务端响应对象
                if (FtpResponse.StatusCode == FtpStatusCode.FileActionOK)
                {
                    result = true;
                }
                if (FtpResponse != null)
                {
                    FtpResponse.Close();
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return result;
        }
        #endregion

10:

 #region 获取文件的大小
        public static long GetFileSize(string ftpFileDirectory, string FtpfileName, string ftpHost, string ftpUserID, string ftpPassword)
        {           
            long fileSize = 0;
            try
            {
                string ftpUri = @"ftp://" + ftpHost + ftpFileDirectory+ FtpfileName;
                Uri uri = new Uri(ftpUri);
                FtpWebRequest FtpRequest = (FtpWebRequest)FtpWebRequest.Create(uri);
                FtpRequest.KeepAlive = true;//该值指定在请求完成之后是否关闭到 FTP 服务器的控制连接
                FtpRequest.UseBinary = true;//true,指示服务器要传输的是二进制数据;false,指示数据为文本
                FtpRequest.Credentials = new NetworkCredential(ftpUserID, ftpPassword);//用户,密码           
                FtpRequest.Method = WebRequestMethods.Ftp.GetFileSize;//向服务器发出获取文件大小名请求命令
                FtpWebResponse FtpResponse = FtpRequest.GetResponse() as FtpWebResponse;//FTP服务端响应对象
                if (FtpResponse.StatusCode == FtpStatusCode.FileStatus)
                {
                    fileSize = FtpResponse.ContentLength;
                }
                if (FtpResponse != null)
                {
                    FtpResponse.Close();
                }             
             
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }            
            return fileSize;
        }
        #endregion

11:

  #region 获取动态IP地址
        /// <summary>
        /// 通过网址获取IP地址
        /// </summary>
        /// <param name="url">网址</param>
        /// <returns>网址所在主机的ip</returns>
        public static string GetIpAdderss(string url)
        {
            string ip = string.Empty;
            try
            {
                IPAddress[] iPAddresses = Dns.GetHostAddresses(url);
                if (iPAddresses.Length > 0)
                {
                    ip = iPAddresses[0].ToString();
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }          
           
            return ip;
        }
        #endregion

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值