FTp上传文件,创建文件夹

时间:2025-03-24 07:36:42
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; // 缓冲大小设置为kb int buffLength = 2048; byte[] buff = new byte[buffLength]; int contentLen; // 打开一个文件流() 去读上传的文件 FileStream fs = fileInf.OpenRead(); try { // 把上传的文件写入流 Stream strm = reqFTP.GetRequestStream(); // 每次读文件流的kb contentLen = fs.Read(buff, 0, buffLength); // 流内容没有结束 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) { 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); }