FtpWebRequest reqFTP;public void Upload(string filename){FileInfo fileInf = new FileInfo(filename);string localFile = ftpFilePath + "/" + DateTime.Now.Year;if(!Check(localFile)) //判断是否存在该文件夹{FtpMakeDir(localFile); //创建文件夹 因为一次只能创建一个文件夹,我想创建三层所以就写了三个判断}localFile = localFile + "/" + DateTime.Now.Month;if(!Check(localFile)) //判断是否存在该文件夹{FtpMakeDir(localFile); //创建文件夹}localFile = localFile + "/" + DateTime.Now.Day;if(!Check(localFile)) //判断是否存在该文件夹{FtpMakeDir(localFile); //创建文件夹}string uri = "ftp://" + ftpServerIP + "/" + localFile + "/" + fileInf.Name;Connect(uri); //连接// 默认为true,连接不会被关闭// 在一个命令之后被执行reqFTP.KeepAlive = false;// 指定执行什么命令reqFTP.Method = WebRequestMethods.Ftp.UploadFile;// 上传文件时通知服务器文件的大小reqFTP.ContentLength = fileInf.Length;// 缓冲大小设置为kbint buffLength = 2048;byte[] buff = new byte[buffLength];int contentLen;// 打开一个文件流(System.IO.FileStream) 去读上传的文件FileStream fs = fileInf.OpenRead();try{// 把上传的文件写入流Stream strm = reqFTP.GetRequestStream();// 每次读文件流的kbcontentLen = fs.Read(buff, 0, buffLength);// 流内容没有结束while(contentLen != 0){// 把内容从file stream 写入upload streamstrm.Write(buff, 0, contentLen);contentLen = fs.Read(buff, 0, buffLength);}// 关闭两个流strm.Close();fs.Close();}catch(Exception ex){CommonHelper.PrintLog("FTP传输文件出错!");}}//判断是否存在该文件public Boolean Check(string localFile){bool flag = true;try{reqFTP = (FtpWebRequest) WebRequest.Create("ftp://" + ftpServerIP + "/" + localFile);reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;FtpWebResponse response = (FtpWebResponse) reqFTP.GetResponse();response.Close();}catch(Exception){reqFTP.Abort();flag = false;}return flag;}//创建目录public Boolean FtpMakeDir(string localFile){reqFTP = (FtpWebRequest) WebRequest.Create("ftp://" + ftpServerIP + "/" + localFile);CommonHelper.PrintLog("创建路径" + "ftp://" + ftpServerIP + "/" + localFile);reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);reqFTP.Method = WebRequestMethods.Ftp.MakeDirectory;try{reqFTP.UsePassive = true;reqFTP.UseBinary = false;reqFTP.KeepAlive = false;FtpWebResponse response = (FtpWebResponse) reqFTP.GetResponse();response.Close();}catch(Exception ex){CommonHelper.PrintLog("创建文件报错" + ex.ToString());reqFTP.Abort();return false;}reqFTP.Abort();return true;}/// <summary>/// FTP连接/// </summary>/// <param name="path"></param>public void Connect(string path){// 根据uri创建FtpWebRequest对象reqFTP = (FtpWebRequest) FtpWebRequest.Create(new Uri(path));// 指定数据传输类型reqFTP.UseBinary = true;// ftp用户名和密码reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);}
1200字范文,内容丰富有趣,写作的好帮手!