您好,登錄后才能下訂單哦!
本文實(shí)例為大家分享了C# FTP操作類的具體代碼,可進(jìn)行FTP的上傳,下載等其他功能,支持?jǐn)帱c(diǎn)續(xù)傳,供大家參考,具體內(nèi)容如下
FTPHelper
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; namespace ManagementProject { public class FTPHelper { string ftpRemotePath; #region 變量屬性 /// <summary> /// Ftp服務(wù)器ip /// </summary> public static string FtpServerIP = ""; /// <summary> /// Ftp 指定用戶名 /// </summary> public static string FtpUserID = ""; /// <summary> /// Ftp 指定用戶密碼 /// </summary> public static string FtpPassword = ""; public static string ftpURI = "ftp://" + FtpServerIP + "/"; #endregion #region 從FTP服務(wù)器下載文件,指定本地路徑和本地文件名 /// <summary> /// 從FTP服務(wù)器下載文件,指定本地路徑和本地文件名 /// </summary> /// <param name="remoteFileName">遠(yuǎn)程文件名</param> /// <param name="localFileName">保存本地的文件名(包含路徑)</param> /// <param name="ifCredential">是否啟用身份驗(yàn)證(false:表示允許用戶匿名下載)</param> /// <param name="updateProgress">報(bào)告進(jìn)度的處理(第一個(gè)參數(shù):總大小,第二個(gè)參數(shù):當(dāng)前進(jìn)度)</param> /// <returns>是否下載成功</returns> public static bool FtpDownload(string remoteFileName, string localFileName, bool ifCredential, Action<int, int> updateProgress = null) { FtpWebRequest reqFTP, ftpsize; Stream ftpStream = null; FtpWebResponse response = null; FileStream outputStream = null; try { outputStream = new FileStream(localFileName, FileMode.Create); if (FtpServerIP == null || FtpServerIP.Trim().Length == 0) { throw new Exception("ftp下載目標(biāo)服務(wù)器地址未設(shè)置!"); } Uri uri = new Uri("ftp://" + FtpServerIP + "/" + remoteFileName); ftpsize = (FtpWebRequest)FtpWebRequest.Create(uri); ftpsize.UseBinary = true; reqFTP = (FtpWebRequest)FtpWebRequest.Create(uri); reqFTP.UseBinary = true; reqFTP.KeepAlive = false; if (ifCredential)//使用用戶身份認(rèn)證 { ftpsize.Credentials = new NetworkCredential(FtpUserID, FtpPassword); reqFTP.Credentials = new NetworkCredential(FtpUserID, FtpPassword); } ftpsize.Method = WebRequestMethods.Ftp.GetFileSize; FtpWebResponse re = (FtpWebResponse)ftpsize.GetResponse(); long totalBytes = re.ContentLength; re.Close(); reqFTP.Method = WebRequestMethods.Ftp.DownloadFile; response = (FtpWebResponse)reqFTP.GetResponse(); ftpStream = response.GetResponseStream(); //更新進(jìn)度 if (updateProgress != null) { updateProgress((int)totalBytes, 0);//更新進(jìn)度條 } long totalDownloadedByte = 0; int bufferSize = 2048; int readCount; byte[] buffer = new byte[bufferSize]; readCount = ftpStream.Read(buffer, 0, bufferSize); while (readCount > 0) { totalDownloadedByte = readCount + totalDownloadedByte; outputStream.Write(buffer, 0, readCount); //更新進(jìn)度 if (updateProgress != null) { updateProgress((int)totalBytes, (int)totalDownloadedByte);//更新進(jìn)度條 } readCount = ftpStream.Read(buffer, 0, bufferSize); } ftpStream.Close(); outputStream.Close(); response.Close(); return true; } catch (Exception ex) { return false; throw; } finally { if (ftpStream != null) { ftpStream.Close(); } if (outputStream != null) { outputStream.Close(); } if (response != null) { response.Close(); } } } /// <summary> /// 從FTP服務(wù)器下載文件,指定本地路徑和本地文件名(支持?jǐn)帱c(diǎn)下載) /// </summary> /// <param name="remoteFileName">遠(yuǎn)程文件名</param> /// <param name="localFileName">保存本地的文件名(包含路徑)</param> /// <param name="ifCredential">是否啟用身份驗(yàn)證(false:表示允許用戶匿名下載)</param> /// <param name="size">已下載文件流大小</param> /// <param name="updateProgress">報(bào)告進(jìn)度的處理(第一個(gè)參數(shù):總大小,第二個(gè)參數(shù):當(dāng)前進(jìn)度)</param> /// <returns>是否下載成功</returns> public static bool FtpBrokenDownload(string remoteFileName, string localFileName, bool ifCredential, long size, Action<int, int> updateProgress = null) { FtpWebRequest reqFTP, ftpsize; Stream ftpStream = null; FtpWebResponse response = null; FileStream outputStream = null; try { outputStream = new FileStream(localFileName, FileMode.Append); if (FtpServerIP == null || FtpServerIP.Trim().Length == 0) { throw new Exception("ftp下載目標(biāo)服務(wù)器地址未設(shè)置!"); } Uri uri = new Uri("ftp://" + FtpServerIP + "/" + remoteFileName); ftpsize = (FtpWebRequest)FtpWebRequest.Create(uri); ftpsize.UseBinary = true; ftpsize.ContentOffset = size; reqFTP = (FtpWebRequest)FtpWebRequest.Create(uri); reqFTP.UseBinary = true; reqFTP.KeepAlive = false; reqFTP.ContentOffset = size; if (ifCredential)//使用用戶身份認(rèn)證 { ftpsize.Credentials = new NetworkCredential(FtpUserID, FtpPassword); reqFTP.Credentials = new NetworkCredential(FtpUserID, FtpPassword); } ftpsize.Method = WebRequestMethods.Ftp.GetFileSize; FtpWebResponse re = (FtpWebResponse)ftpsize.GetResponse(); long totalBytes = re.ContentLength; re.Close(); reqFTP.Method = WebRequestMethods.Ftp.DownloadFile; response = (FtpWebResponse)reqFTP.GetResponse(); ftpStream = response.GetResponseStream(); //更新進(jìn)度 if (updateProgress != null) { updateProgress((int)totalBytes, 0);//更新進(jìn)度條 } long totalDownloadedByte = 0; int bufferSize = 2048; int readCount; byte[] buffer = new byte[bufferSize]; readCount = ftpStream.Read(buffer, 0, bufferSize); while (readCount > 0) { totalDownloadedByte = readCount + totalDownloadedByte; outputStream.Write(buffer, 0, readCount); //更新進(jìn)度 if (updateProgress != null) { updateProgress((int)totalBytes, (int)totalDownloadedByte);//更新進(jìn)度條 } readCount = ftpStream.Read(buffer, 0, bufferSize); } ftpStream.Close(); outputStream.Close(); response.Close(); return true; } catch (Exception ex) { return false; throw; } finally { if (ftpStream != null) { ftpStream.Close(); } if (outputStream != null) { outputStream.Close(); } if (response != null) { response.Close(); } } } /// <summary> /// 從FTP服務(wù)器下載文件,指定本地路徑和本地文件名 /// </summary> /// <param name="remoteFileName">遠(yuǎn)程文件名</param> /// <param name="localFileName">保存本地的文件名(包含路徑)</param> /// <param name="ifCredential">是否啟用身份驗(yàn)證(false:表示允許用戶匿名下載)</param> /// <param name="updateProgress">報(bào)告進(jìn)度的處理(第一個(gè)參數(shù):總大小,第二個(gè)參數(shù):當(dāng)前進(jìn)度)</param> /// <param name="brokenOpen">是否斷點(diǎn)下載:true 會(huì)在localFileName 找是否存在已經(jīng)下載的文件,并計(jì)算文件流大小</param> /// <returns>是否下載成功</returns> public static bool FtpDownload(string remoteFileName, string localFileName, bool ifCredential, bool brokenOpen, Action<int, int> updateProgress = null) { if (brokenOpen) { try { long size = 0; if (File.Exists(localFileName)) { using (FileStream outputStream = new FileStream(localFileName, FileMode.Open)) { size = outputStream.Length; } } return FtpBrokenDownload(remoteFileName, localFileName, ifCredential, size, updateProgress); } catch { throw; } } else { return FtpDownload(remoteFileName, localFileName, ifCredential, updateProgress); } } #endregion #region 上傳文件到FTP服務(wù)器 /// <summary> /// 上傳文件到FTP服務(wù)器 /// </summary> /// <param name="localFullPath">本地帶有完整路徑的文件名</param> /// <param name="updateProgress">報(bào)告進(jìn)度的處理(第一個(gè)參數(shù):總大小,第二個(gè)參數(shù):當(dāng)前進(jìn)度)</param> /// <returns>是否下載成功</returns> public static bool FtpUploadFile(string localFullPathName, Action<int, int> updateProgress = null) { FtpWebRequest reqFTP; Stream stream = null; FtpWebResponse response = null; FileStream fs = null; try { FileInfo finfo = new FileInfo(localFullPathName); if (FtpServerIP == null || FtpServerIP.Trim().Length == 0) { throw new Exception("ftp上傳目標(biāo)服務(wù)器地址未設(shè)置!"); } Uri uri = new Uri("ftp://" + FtpServerIP + "/" + finfo.Name); reqFTP = (FtpWebRequest)FtpWebRequest.Create(uri); reqFTP.KeepAlive = false; reqFTP.UseBinary = true; reqFTP.Credentials = new NetworkCredential(FtpUserID, FtpPassword);//用戶,密碼 reqFTP.Method = WebRequestMethods.Ftp.UploadFile;//向服務(wù)器發(fā)出下載請(qǐng)求命令 reqFTP.ContentLength = finfo.Length;//為request指定上傳文件的大小 response = reqFTP.GetResponse() as FtpWebResponse; reqFTP.ContentLength = finfo.Length; int buffLength = 1024; byte[] buff = new byte[buffLength]; int contentLen; fs = finfo.OpenRead(); stream = reqFTP.GetRequestStream(); contentLen = fs.Read(buff, 0, buffLength); int allbye = (int)finfo.Length; //更新進(jìn)度 if (updateProgress != null) { updateProgress((int)allbye, 0);//更新進(jìn)度條 } int startbye = 0; while (contentLen != 0) { startbye = contentLen + startbye; stream.Write(buff, 0, contentLen); //更新進(jìn)度 if (updateProgress != null) { updateProgress((int)allbye, (int)startbye);//更新進(jìn)度條 } contentLen = fs.Read(buff, 0, buffLength); } stream.Close(); fs.Close(); response.Close(); return true; } catch (Exception ex) { return false; throw; } finally { if (fs != null) { fs.Close(); } if (stream != null) { stream.Close(); } if (response != null) { response.Close(); } } } /// <summary> /// 上傳文件到FTP服務(wù)器(斷點(diǎn)續(xù)傳) /// </summary> /// <param name="localFullPath">本地文件全路徑名稱:C:\Users\JianKunKing\Desktop\IronPython腳本測(cè)試工具</param> /// <param name="remoteFilepath">遠(yuǎn)程文件所在文件夾路徑</param> /// <param name="updateProgress">報(bào)告進(jìn)度的處理(第一個(gè)參數(shù):總大小,第二個(gè)參數(shù):當(dāng)前進(jìn)度)</param> /// <returns></returns> public static bool FtpUploadBroken(string localFullPath, string remoteFilepath, Action<int, int> updateProgress = null) { if (remoteFilepath == null) { remoteFilepath = ""; } string newFileName = string.Empty; bool success = true; FileInfo fileInf = new FileInfo(localFullPath); long allbye = (long)fileInf.Length; if (fileInf.Name.IndexOf("#") == -1) { newFileName = RemoveSpaces(fileInf.Name); } else { newFileName = fileInf.Name.Replace("#", "#"); newFileName = RemoveSpaces(newFileName); } long startfilesize = GetFileSize(newFileName, remoteFilepath); if (startfilesize >= allbye) { return false; } long startbye = startfilesize; //更新進(jìn)度 if (updateProgress != null) { updateProgress((int)allbye, (int)startfilesize);//更新進(jìn)度條 } string uri; if (remoteFilepath.Length == 0) { uri = "ftp://" + FtpServerIP + "/" + newFileName; } else { uri = "ftp://" + FtpServerIP + "/" + remoteFilepath + "/" + newFileName; } FtpWebRequest reqFTP; // 根據(jù)uri創(chuàng)建FtpWebRequest對(duì)象 reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri)); // ftp用戶名和密碼 reqFTP.Credentials = new NetworkCredential(FtpUserID, FtpPassword); // 默認(rèn)為true,連接不會(huì)被關(guān)閉 // 在一個(gè)命令之后被執(zhí)行 reqFTP.KeepAlive = false; // 指定執(zhí)行什么命令 reqFTP.Method = WebRequestMethods.Ftp.AppendFile; // 指定數(shù)據(jù)傳輸類型 reqFTP.UseBinary = true; // 上傳文件時(shí)通知服務(wù)器文件的大小 reqFTP.ContentLength = fileInf.Length; int buffLength = 2048;// 緩沖大小設(shè)置為2kb byte[] buff = new byte[buffLength]; // 打開一個(gè)文件流 (System.IO.FileStream) 去讀上傳的文件 FileStream fs = fileInf.OpenRead(); Stream strm = null; try { // 把上傳的文件寫入流 strm = reqFTP.GetRequestStream(); // 每次讀文件流的2kb fs.Seek(startfilesize, 0); int contentLen = fs.Read(buff, 0, buffLength); // 流內(nèi)容沒有結(jié)束 while (contentLen != 0) { // 把內(nèi)容從file stream 寫入 upload stream strm.Write(buff, 0, contentLen); contentLen = fs.Read(buff, 0, buffLength); startbye += contentLen; //更新進(jìn)度 if (updateProgress != null) { updateProgress((int)allbye, (int)startbye);//更新進(jìn)度條 } } // 關(guān)閉兩個(gè)流 strm.Close(); fs.Close(); } catch { success = false; throw; } finally { if (fs != null) { fs.Close(); } if (strm != null) { strm.Close(); } } return success; } /// <summary> /// 去除空格 /// </summary> /// <param name="str"></param> /// <returns></returns> private static string RemoveSpaces(string str) { string a = ""; CharEnumerator CEnumerator = str.GetEnumerator(); while (CEnumerator.MoveNext()) { byte[] array = new byte[1]; array = System.Text.Encoding.ASCII.GetBytes(CEnumerator.Current.ToString()); int asciicode = (short)(array[0]); if (asciicode != 32) { a += CEnumerator.Current.ToString(); } } string sdate = System.DateTime.Now.Year.ToString() + System.DateTime.Now.Month.ToString() + System.DateTime.Now.Day.ToString() + System.DateTime.Now.Hour.ToString() + System.DateTime.Now.Minute.ToString() + System.DateTime.Now.Second.ToString() + System.DateTime.Now.Millisecond.ToString(); return a.Split('.')[a.Split('.').Length - 2] + "." + a.Split('.')[a.Split('.').Length - 1]; } /// <summary> /// 獲取已上傳文件大小 /// </summary> /// <param name="filename">文件名稱</param> /// <param name="path">服務(wù)器文件路徑</param> /// <returns></returns> public static long GetFileSize(string filename, string remoteFilepath) { long filesize = 0; try { FtpWebRequest reqFTP; FileInfo fi = new FileInfo(filename); string uri; if (remoteFilepath.Length == 0) { uri = "ftp://" + FtpServerIP + "/" + fi.Name; } else { uri = "ftp://" + FtpServerIP + "/" + remoteFilepath + "/" + fi.Name; } reqFTP = (FtpWebRequest)FtpWebRequest.Create(uri); reqFTP.KeepAlive = false; reqFTP.UseBinary = true; reqFTP.Credentials = new NetworkCredential(FtpUserID, FtpPassword);//用戶,密碼 reqFTP.Method = WebRequestMethods.Ftp.GetFileSize; FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse(); filesize = response.ContentLength; return filesize; } catch { return 0; } } //public void Connect(String path, string ftpUserID, string ftpPassword)//連接ftp //{ // // 根據(jù)uri創(chuàng)建FtpWebRequest對(duì)象 // reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(path)); // // 指定數(shù)據(jù)傳輸類型 // reqFTP.UseBinary = true; // // ftp用戶名和密碼 // reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword); //} #endregion #region 獲取當(dāng)前目錄下明細(xì) /// <summary> /// 獲取當(dāng)前目錄下明細(xì)(包含文件和文件夾) /// </summary> /// <returns></returns> public static string[] GetFilesDetailList() { string[] downloadFiles; try { StringBuilder result = new StringBuilder(); FtpWebRequest ftp; ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI)); ftp.Credentials = new NetworkCredential(FtpUserID, FtpPassword); ftp.Method = WebRequestMethods.Ftp.ListDirectoryDetails; WebResponse response = ftp.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default); string line = reader.ReadLine(); while (line != null) { result.Append(line); result.Append("\n"); line = reader.ReadLine(); } result.Remove(result.ToString().LastIndexOf("\n"), 1); reader.Close(); response.Close(); return result.ToString().Split('\n'); } catch (Exception ex) { downloadFiles = null; throw ex; } } /// <summary> /// 獲取當(dāng)前目錄下文件列表(僅文件) /// </summary> /// <returns></returns> public static string[] GetFileList(string mask) { string[] downloadFiles; StringBuilder result = new StringBuilder(); FtpWebRequest reqFTP; try { reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI)); reqFTP.UseBinary = true; reqFTP.Credentials = new NetworkCredential(FtpUserID, FtpPassword); reqFTP.Method = WebRequestMethods.Ftp.ListDirectory; WebResponse response = reqFTP.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default); string line = reader.ReadLine(); while (line != null) { if (mask.Trim() != string.Empty && mask.Trim() != "*.*") { string mask_ = mask.Substring(0, mask.IndexOf("*")); if (line.Substring(0, mask_.Length) == mask_) { result.Append(line); result.Append("\n"); } } else { result.Append(line); result.Append("\n"); } line = reader.ReadLine(); } result.Remove(result.ToString().LastIndexOf('\n'), 1); reader.Close(); response.Close(); return result.ToString().Split('\n'); } catch (Exception ex) { downloadFiles = null; throw ex; } } /// <summary> /// 獲取當(dāng)前目錄下所有的文件夾列表(僅文件夾) /// </summary> /// <returns></returns> public static string[] GetDirectoryList() { string[] drectory = GetFilesDetailList(); string m = string.Empty; foreach (string str in drectory) { int dirPos = str.IndexOf("<DIR>"); if (dirPos > 0) { /*判斷 Windows 風(fēng)格*/ m += str.Substring(dirPos + 5).Trim() + "\n"; } else if (str.Trim().Substring(0, 1).ToUpper() == "D") { /*判斷 Unix 風(fēng)格*/ string dir = str.Substring(54).Trim(); if (dir != "." && dir != "..") { m += dir + "\n"; } } } char[] n = new char[] { '\n' }; return m.Split(n); } #endregion #region 刪除文件及文件夾 /// <summary> /// 刪除文件 /// </summary> /// <param name="fileName"></param> public static bool Delete(string fileName) { try { string uri = ftpURI + fileName; FtpWebRequest reqFTP; reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri)); reqFTP.Credentials = new NetworkCredential(FtpUserID, FtpPassword); reqFTP.KeepAlive = false; reqFTP.Method = WebRequestMethods.Ftp.DeleteFile; string result = String.Empty; FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse(); long size = response.ContentLength; Stream datastream = response.GetResponseStream(); StreamReader sr = new StreamReader(datastream); result = sr.ReadToEnd(); sr.Close(); datastream.Close(); response.Close(); return true; } catch (Exception ex) { return false; throw ex; } } /// <summary> /// 刪除文件夾 /// </summary> /// <param name="folderName"></param> public static void RemoveDirectory(string folderName) { try { string uri = ftpURI + folderName; FtpWebRequest reqFTP; reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri)); reqFTP.Credentials = new NetworkCredential(FtpUserID, FtpPassword); reqFTP.KeepAlive = false; reqFTP.Method = WebRequestMethods.Ftp.RemoveDirectory; string result = String.Empty; FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse(); long size = response.ContentLength; Stream datastream = response.GetResponseStream(); StreamReader sr = new StreamReader(datastream); result = sr.ReadToEnd(); sr.Close(); datastream.Close(); response.Close(); } catch (Exception ex) { throw ex; } } #endregion #region 其他操作 /// <summary> /// 獲取指定文件大小 /// </summary> /// <param name="filename"></param> /// <returns></returns> public static long GetFileSize(string filename) { FtpWebRequest reqFTP; long fileSize = 0; try { reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + filename)); reqFTP.Method = WebRequestMethods.Ftp.GetFileSize; reqFTP.UseBinary = true; reqFTP.Credentials = new NetworkCredential(FtpUserID, FtpPassword); FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse(); Stream ftpStream = response.GetResponseStream(); fileSize = response.ContentLength; ftpStream.Close(); response.Close(); } catch (Exception ex) { throw ex; } return fileSize; } /// <summary> /// 判斷當(dāng)前目錄下指定的子目錄是否存在 /// </summary> /// <param name="RemoteDirectoryName">指定的目錄名</param> public bool DirectoryExist(string RemoteDirectoryName) { try { string[] dirList = GetDirectoryList(); foreach (string str in dirList) { if (str.Trim() == RemoteDirectoryName.Trim()) { return true; } } return false; } catch { return false; } } /// <summary> /// 判斷當(dāng)前目錄下指定的文件是否存在 /// </summary> /// <param name="RemoteFileName">遠(yuǎn)程文件名</param> public bool FileExist(string RemoteFileName) { string[] fileList = GetFileList("*.*"); foreach (string str in fileList) { if (str.Trim() == RemoteFileName.Trim()) { return true; } } return false; } /// <summary> /// 創(chuàng)建文件夾 /// </summary> /// <param name="dirName"></param> public void MakeDir(string dirName) { FtpWebRequest reqFTP; try { // dirName = name of the directory to create. reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + dirName)); reqFTP.Method = WebRequestMethods.Ftp.MakeDirectory; reqFTP.UseBinary = true; reqFTP.Credentials = new NetworkCredential(FtpUserID, FtpPassword); FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse(); Stream ftpStream = response.GetResponseStream(); ftpStream.Close(); response.Close(); } catch (Exception ex) { throw ex; } } /// <summary> /// 改名 /// </summary> /// <param name="currentFilename"></param> /// <param name="newFilename"></param> public void ReName(string currentFilename, string newFilename) { FtpWebRequest reqFTP; try { reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + currentFilename)); reqFTP.Method = WebRequestMethods.Ftp.Rename; reqFTP.RenameTo = newFilename; reqFTP.UseBinary = true; reqFTP.Credentials = new NetworkCredential(FtpUserID, FtpPassword); FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse(); Stream ftpStream = response.GetResponseStream(); ftpStream.Close(); response.Close(); } catch (Exception ex) { throw ex; } } /// <summary> /// 移動(dòng)文件 /// </summary> /// <param name="currentFilename"></param> /// <param name="newFilename"></param> public void MovieFile(string currentFilename, string newDirectory) { ReName(currentFilename, newDirectory); } /// <summary> /// 切換當(dāng)前目錄 /// </summary> /// <param name="DirectoryName"></param> /// <param name="IsRoot">true 絕對(duì)路徑 false 相對(duì)路徑</param> public void GotoDirectory(string DirectoryName, bool IsRoot) { if (IsRoot) { ftpRemotePath = DirectoryName; } else { ftpRemotePath += DirectoryName + "/"; } ftpURI = "ftp://" + FtpServerIP + "/" + ftpRemotePath + "/"; } #endregion } }
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。