C#实现FTP上传文件的方法

1.通过用FTP进行上传文件,首先要实现建立FTP连接,一般建立FTP连接,需要知道FTP配置有关的信息。一般要在Bean中建立一个ServiceFileInfo.cs文件进行记录,一般需要FTP地址、登录用户名和登录密码。然后通过其他页面进行访问读取。代码样式如下:

class ServiceFileInfo{// service1public static string txtFilePath = @"ftp://12.128.128.01/FileName/"; //userid & passwordpublic static string txtUID = "username"; public static string txtPWD = "password"; }

2.通过主方法读取Bean文件下面的的ServiceFileInfo.cs文件的信息,去实现建立FTP连接。这里还需要清楚的知道你上传文件的路径(Path)和文件名称(FileName)。根据这些信息主方法去调用写着Bean中的另外一个ftpOperation.cs 文件(这个.cs文件中主要写一些关于FTP的操作方法),进行FTP访问操作。
  • 主方法调用FTP操作代码
ExecutionResult exeRes = this.ftpOperation.UploadFile(textFilePath, txtUID, txtPWD, Path + "/" + FileName + ".txt"); //.txt为文件的后缀名

  • Bean文件中ftpOperation.cs文件关于FTP操作的方法
public ExecutionResult UploadFile(string vIMSPath, string vUID, string vPassword, string vLocalPath){ExecutionResult result = new ExecutionResult(); result = connectState(vIMSPath, vUID, vPassword, vLocalPath); //调用下面代码方法if (result.Status){File.Delete(vLocalPath); }return result; }

connectState()方法
public static ExecutionResult connectState(string vIMSPath, string vUID, string vPassword, string fileName){string operater = ""; bool Flag = false; ExecutionResult result; result = new ExecutionResult(); lock (lockObj){try{operater = "Connet to FTP"; FTPOperation ftp = new FTPOperation(new Uri(vIMSPath), vUID, vPassword); operater = "Upload file"; Flag = ftp.UploadFile(fileName, Path.GetFileName(fileName), true); if (Flag){result.Status = true; result.Message = "Send to server OK"; }}catch (Exception ex){result.Status = false; result.Anything = "Mail"; result.Message = operater + ":" + ex.Message; }}return result; }

  • UploadFile()方法
public bool UploadFile(string LocalFullPath, string RemoteFileName, bool OverWriteRemoteFile){bool result; try{bool flag = !this.IsValidFileChars(RemoteFileName) || !this.IsValidFileChars(Path.GetFileName(LocalFullPath)) || !this.IsValidPathChars(Path.GetDirectoryName(LocalFullPath)); if (flag){throw new Exception("非法文件名或目录名!"); }bool flag2 = File.Exists(LocalFullPath); if (!flag2){throw new Exception("本地文件不存在!"); }FileStream fileStream = new FileStream(LocalFullPath, FileMode.Open, FileAccess.Read); byte[] array = new byte[fileStream.Length]; fileStream.Read(array, 0, (int)fileStream.Length); fileStream.Close(); result = this.UploadFile(array, RemoteFileName, OverWriteRemoteFile); }catch (Exception ex){this.ErrorMsg = ex.ToString(); throw ex; }return result; }public bool UploadFile(byte[] FileBytes, string RemoteFileName){bool flag = !this.IsValidFileChars(RemoteFileName); if (flag){throw new Exception("非法文件名或目录名!"); }return this.UploadFile(FileBytes, RemoteFileName, false); }public bool UploadFile(byte[] FileBytes, string RemoteFileName, bool OverWriteRemoteFile){bool result; try{bool flag = !this.IsValidFileChars(RemoteFileName); if (flag){throw new Exception("非法文件名!"); }bool flag2 = !OverWriteRemoteFile && this.FileExist(RemoteFileName); if (flag2){throw new Exception("FTP服务上面已经存在同名文件!"); }this.Response = this.Open(new Uri(this.Uri.ToString() + RemoteFileName), "STOR"); Stream requestStream = this.Request.GetRequestStream(); MemoryStream memoryStream = new MemoryStream(FileBytes); byte[] array = new byte[1024]; int num = 0; for (; ; ){int num2 = memoryStream.Read(array, 0, array.Length); bool flag3 = num2 == 0; if (flag3){break; }num += num2; requestStream.Write(array, 0, num2); }requestStream.Close(); this.Response = (FtpWebResponse)this.Request.GetResponse(); memoryStream.Close(); memoryStream.Dispose(); FileBytes = null; result = true; }catch (Exception ex){this.ErrorMsg = ex.ToString(); throw ex; }return result; }

【C#实现FTP上传文件的方法】到此这篇关于C#实现FTP上传文件的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    推荐阅读