using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; namespace SmartCoalApplication.Base.CommTool { /// /// FPT帮助类 /// public class FTPWebsiteHelper { /// /// FTP地址 地址 +路径 /// public string ftpPath { get; set; } /// /// FTP账号 /// public string ftpUserID { get; set; } /// /// FTP密码 /// public string ftpPassword { get; set; } /// /// FTP密码 /// public string ftpStr { get; set; } /// /// 创建文件夹 /// /// 要上传到FTP服务器的本地文件 /// FTP地址 public void CreateDictionary(string dateStr) { try { FtpWebRequest reqFTP; reqFTP = (FtpWebRequest)FtpWebRequest.Create(ftpPath + "/" + dateStr);// 根据uri创建FtpWebRequest对象 reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);// ftp用户名和密码 reqFTP.KeepAlive = false;// 默认为true,连接不会被关闭 // 在一个命令之后被执行 reqFTP.Method = WebRequestMethods.Ftp.MakeDirectory;// 指定执行什么命令 FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse(); Stream ftpStream = response.GetResponseStream(); ftpStream.Close(); response.Close(); } catch (Exception ex) { } } /// /// 上传文件 /// /// 要上传到FTP服务器的本地文件 /// FTP地址 public void UpLoadFile(string localFile) { if (!File.Exists(localFile)) { return; } FileInfo fileInf = new FileInfo(localFile); FtpWebRequest reqFTP; string dateStr = DateTime.Now.ToString("yyyyMMdd"); this.ftpStr = dateStr; CreateDictionary(dateStr); reqFTP = (FtpWebRequest)FtpWebRequest.Create(ftpPath + "/" + dateStr + "/" + fileInf.Name);// 根据uri创建FtpWebRequest对象 reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);// ftp用户名和密码 reqFTP.KeepAlive = false;// 默认为true,连接不会被关闭 // 在一个命令之后被执行 reqFTP.Method = WebRequestMethods.Ftp.UploadFile;// 指定执行什么命令 reqFTP.UseBinary = true;// 指定数据传输类型 reqFTP.ContentLength = fileInf.Length;// 上传文件时通知服务器文件的大小 int buffLength = 2048;// 缓冲大小设置为2kb byte[] buff = new byte[buffLength]; int contentLen; // 打开一个文件流 (System.IO.FileStream) 去读上传的文件 FileStream fs = fileInf.OpenRead(); try { Stream strm = reqFTP.GetRequestStream();// 把上传的文件写入流 contentLen = fs.Read(buff, 0, buffLength);// 每次读文件流的2kb while (contentLen != 0)// 流内容没有结束 { // 把内容从file stream 写入 upload stream strm.Write(buff, 0, contentLen); contentLen = fs.Read(buff, 0, buffLength); } // 关闭两个流 strm.Close(); fs.Close(); } catch (Exception ex) { throw ex; } } } }