C#实现客户端与服务器端的文件传输
实现文件的异地传输,可以采用http协议 ftp等协议;ftp传输的原理同样也是数据流的IO数据交换。关键的4步有:1.客户端与服务端的连接;2.客户端的文件流转换;
3.I/O数据传输;4.服务端数据的写入.
- public class FtpWeb
- {
- string ftpRemotePath;
- string ftpUserID;
- string ftpPassword;
- string ftpURI;
- string ftpServerIP;
- /// <summary>
- /// 连接FTP
- /// </summary>
- /// <param name="FtpServerIP">FTP连接地址</param>
- /// <param name="FtpRemotePath">指定FTP连接成功后的当前目录, 如果不指定即默认为根目录</param>
- /// <param name="FtpUserID">用户名</param>
- /// <param name="FtpPassword">密码</param>
- public FtpWeb(string FtpServerIP, string FtpUserID, string FtpPassword)
- {
- ftpServerIP = FtpServerIP;
- ftpUserID = FtpUserID;
- ftpPassword = FtpPassword;
- ftpURI = FtpServerIP + "/";
- }
- /// <summary>
- /// 上传
- /// </summary>
- /// <param name="filename"></param>
- public void Upload(string filename)
- {
- FileInfo fileInf = new FileInfo(filename);
- string uri = ftpURI + fileInf.Name;
- FtpWebRequest reqFTP;
- reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
- reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
- reqFTP.KeepAlive = false;
- reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
- reqFTP.UseBinary = true;
- reqFTP.ContentLength = fileInf.Length;
- int buffLength = 2048;
- byte[] buff = new byte[buffLength];
- int contentLen;
- FileStream fs = fileInf.OpenRead();
- try
- {
- Stream strm = reqFTP.GetRequestStream();
- contentLen = fs.Read(buff, 0, buffLength);
- while (contentLen != 0)
- {
- strm.Write(buff, 0, contentLen);
- contentLen = fs.Read(buff, 0, buffLength);
- }
- strm.Close();
- fs.Close();
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
- /// <summary>
- /// 上传
- /// </summary>
- /// <param name="filename"></param>
- public void Upload2(string ftpuri, string filename)
- {
- FileInfo fileInf = new FileInfo(filename);
- string uri = ftpuri;
- FtpWebRequest reqFTP;
- reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
- reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
- reqFTP.KeepAlive = false;
- reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
- reqFTP.UseBinary = true;
- reqFTP.ContentLength = fileInf.Length;
- int buffLength = 2048;
- byte[] buff = new byte[buffLength];
- int contentLen;
- FileStream fs = fileInf.OpenRead();
- try
- {
- Stream strm = reqFTP.GetRequestStream();
- contentLen = fs.Read(buff, 0, buffLength);
- while (contentLen != 0)
- {
- strm.Write(buff, 0, contentLen);
- contentLen = fs.Read(buff, 0, buffLength);
- }
- strm.Close();
- fs.Close();
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
- /// <summary>
- /// 下载
- /// </summary>
- /// <param name="filePath"></param>
- /// <param name="fileName"></param>
- public void Download(string filePath, string ftpUri, string fileName)
- {
- FtpWebRequest reqFTP;
- try
- {
- FileStream outputStream = new FileStream(filePath + "\\" + fileName, FileMode.Create);
- reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpUri));
- reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
- reqFTP.UseBinary = true;
- reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
- FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
- Stream ftpStream = response.GetResponseStream();
- long cl = response.ContentLength;
- int bufferSize = 2048;
- int readCount;
- byte[] buffer = new byte[bufferSize];
- readCount = ftpStream.Read(buffer, 0, bufferSize);
- while (readCount > 0)
- {
- outputStream.Write(buffer, 0, readCount);
- readCount = ftpStream.Read(buffer, 0, bufferSize);
- }
- ftpStream.Close();
- outputStream.Close();
- response.Close();
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
- /// <summary>
- /// 删除文件
- /// </summary>
- /// <param name="fileName"></param>
- public void Delete(string fileName)
- {
- try
- {
- string uri = 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();
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
- /// <summary>
- /// 删除文件夹
- /// </summary>
- /// <param name="folderName"></param>
- public 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;
- }
- }
- /// <summary>
- /// 获取当前目录下明细(包含文件和文件夹)
- /// </summary>
- /// <returns></returns>
- public 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>
- /// 获取当前目录下文件列表(仅文件)
- /// </summary>
- /// <returns></returns>
- public 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>
- /// 获取当前目录下所有的文件夹列表(仅文件夹)
- /// </summary>
- /// <returns></returns>
- public string[] GetDirectoryList()
- {
- string[] drectory = GetFilesDetailList();
- string m = string.Empty;
- foreach (string str in drectory)
- {
- int dirPos = str.IndexOf("<DIR>");
- if (dirPos > 0)
- {
- /*判断 Windows 风格*/
- m += str.Substring(dirPos + 5).Trim() + "\n";
- }
- else if (str.Trim().Substring(0, 1).ToUpper() == "D")
- {
- /*判断 Unix 风格*/
- string dir = str.Substring(54).Trim();
- if (dir != "." && dir != "..")
- {
- m += dir + "\n";
- }
- }
- }
- char[] n = new char[] { '\n' };
- return m.Split(n);
- }
- /// <summary>
- /// 判断当前目录下指定的子目录是否存在
- /// </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>
- /// 判断当前目录下指定的文件是否存在
- /// </summary>
- /// <param name="RemoteFileName">远程文件名</param>
- public bool FileExist(string RemoteFileName)
- {
- string[] fileList = GetFileList("*.*");
- foreach (string str in fileList)
- {
- if (str.Trim() == RemoteFileName.Trim())
- {
- return true;
- }
- }
- return false;
- }
- /// <summary>
- /// 创建文件夹
- /// </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="filename"></param>
- /// <returns></returns>
- public 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>
- /// 改名
- /// </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>
- /// 移动文件
- /// </summary>
- /// <param name="currentFilename"></param>
- /// <param name="newFilename"></param>
- public void MovieFile(string currentFilename, string newDirectory)
- {
- ReName(currentFilename, newDirectory);
- }
- /// <summary>
- /// 切换当前目录
- /// </summary>
- /// <param name="DirectoryName"></param>
- /// <param name="IsRoot">true 绝对路径 false 相对路径</param>
- public void GotoDirectory(string DirectoryName, bool IsRoot)
- {
- if (IsRoot)
- {
- ftpRemotePath = DirectoryName;
- }
- else
- {
- ftpRemotePath += DirectoryName + "/";
- }
- ftpURI = "ftp://" + ftpServerIP + "/" + ftpRemotePath + "/";
- }
- }
- public class FtpWeb
- {
- string ftpRemotePath;
- string ftpUserID;
- string ftpPassword;
- string ftpURI;
- string ftpServerIP;
- /// <summary>
- /// 连接FTP
- /// </summary>
- /// <param name="FtpServerIP">FTP连接地址</param>
- /// <param name="FtpRemotePath">指定FTP连接成功后的当前目录, 如果不指定即默认为根目录</param>
- /// <param name="FtpUserID">用户名</param>
- /// <param name="FtpPassword">密码</param>
- public FtpWeb(string FtpServerIP, string FtpUserID, string FtpPassword)
- {
- ftpServerIP = FtpServerIP;
- ftpUserID = FtpUserID;
- ftpPassword = FtpPassword;
- ftpURI = FtpServerIP + "/";
- }
- /// <summary>
- /// 上传
- /// </summary>
- /// <param name="filename"></param>
- public void Upload(string filename)
- {
- FileInfo fileInf = new FileInfo(filename);
- string uri = ftpURI + fileInf.Name;
- FtpWebRequest reqFTP;
- reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
- reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
- reqFTP.KeepAlive = false;
- reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
- reqFTP.UseBinary = true;
- reqFTP.ContentLength = fileInf.Length;
- int buffLength = 2048;
- byte[] buff = new byte[buffLength];
- int contentLen;
- FileStream fs = fileInf.OpenRead();
- try
- {
- Stream strm = reqFTP.GetRequestStream();
- contentLen = fs.Read(buff, 0, buffLength);
- while (contentLen != 0)
- {
- strm.Write(buff, 0, contentLen);
- contentLen = fs.Read(buff, 0, buffLength);
- }
- strm.Close();
- fs.Close();
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
- /// <summary>
- /// 上传
- /// </summary>
- /// <param name="filename"></param>
- public void Upload2(string ftpuri, string filename)
- {
- FileInfo fileInf = new FileInfo(filename);
- string uri = ftpuri;
- FtpWebRequest reqFTP;
- reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
- reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
- reqFTP.KeepAlive = false;
- reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
- reqFTP.UseBinary = true;
- reqFTP.ContentLength = fileInf.Length;
- int buffLength = 2048;
- byte[] buff = new byte[buffLength];
- int contentLen;
- FileStream fs = fileInf.OpenRead();
- try
- {
- Stream strm = reqFTP.GetRequestStream();
- contentLen = fs.Read(buff, 0, buffLength);
- while (contentLen != 0)
- {
- strm.Write(buff, 0, contentLen);
- contentLen = fs.Read(buff, 0, buffLength);
- }
- strm.Close();
- fs.Close();
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
- /// <summary>
- /// 下载
- /// </summary>
- /// <param name="filePath"></param>
- /// <param name="fileName"></param>
- public void Download(string filePath, string ftpUri, string fileName)
- {
- FtpWebRequest reqFTP;
- try
- {
- FileStream outputStream = new FileStream(filePath + "\\" + fileName, FileMode.Create);
- reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpUri));
- reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
- reqFTP.UseBinary = true;
- reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
- FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
- Stream ftpStream = response.GetResponseStream();
- long cl = response.ContentLength;
- int bufferSize = 2048;
- int readCount;
- byte[] buffer = new byte[bufferSize];
- readCount = ftpStream.Read(buffer, 0, bufferSize);
- while (readCount > 0)
- {
- outputStream.Write(buffer, 0, readCount);
- readCount = ftpStream.Read(buffer, 0, bufferSize);
- }
- ftpStream.Close();
- outputStream.Close();
- response.Close();
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
- /// <summary>
- /// 删除文件
- /// </summary>
- /// <param name="fileName"></param>
- public void Delete(string fileName)
- {
- try
- {
- string uri = 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();
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
- /// <summary>
- /// 删除文件夹
- /// </summary>
- /// <param name="folderName"></param>
- public 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;
- }
- }
- /// <summary>
- /// 获取当前目录下明细(包含文件和文件夹)
- /// </summary>
- /// <returns></returns>
- public 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>
- /// 获取当前目录下文件列表(仅文件)
- /// </summary>
- /// <returns></returns>
- public 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>
- /// 获取当前目录下所有的文件夹列表(仅文件夹)
- /// </summary>
- /// <returns></returns>
- public string[] GetDirectoryList()
- {
- string[] drectory = GetFilesDetailList();
- string m = string.Empty;
- foreach (string str in drectory)
- {
- int dirPos = str.IndexOf("<DIR>");
- if (dirPos > 0)
- {
- /*判断 Windows 风格*/
- m += str.Substring(dirPos + 5).Trim() + "\n";
- }
- else if (str.Trim().Substring(0, 1).ToUpper() == "D")
- {
- /*判断 Unix 风格*/
- string dir = str.Substring(54).Trim();
- if (dir != "." && dir != "..")
- {
- m += dir + "\n";
- }
- }
- }
- char[] n = new char[] { '\n' };
- return m.Split(n);
- }
- /// <summary>
- /// 判断当前目录下指定的子目录是否存在
- /// </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>
- /// 判断当前目录下指定的文件是否存在
- /// </summary>
- /// <param name="RemoteFileName">远程文件名</param>
- public bool FileExist(string RemoteFileName)
- {
- string[] fileList = GetFileList("*.*");
- foreach (string str in fileList)
- {
- if (str.Trim() == RemoteFileName.Trim())
- {
- return true;
- }
- }
- return false;
- }
- /// <summary>
- /// 创建文件夹
- /// </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="filename"></param>
- /// <returns></returns>
- public 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>
- /// 改名
- /// </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>
- /// 移动文件
- /// </summary>
- /// <param name="currentFilename"></param>
- /// <param name="newFilename"></param>
- public void MovieFile(string currentFilename, string newDirectory)
- {
- ReName(currentFilename, newDirectory);
- }
- /// <summary>
- /// 切换当前目录
- /// </summary>
- /// <param name="DirectoryName"></param>
- /// <param name="IsRoot">true 绝对路径 false 相对路径</param>
- public void GotoDirectory(string DirectoryName, bool IsRoot)
- {
- if (IsRoot)
- {
- ftpRemotePath = DirectoryName;
- }
- else
- {
- ftpRemotePath += DirectoryName + "/";
- }
- ftpURI = "ftp://" + ftpServerIP + "/" + ftpRemotePath + "/";
- }
- }