600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 本地文件上传FTP或远程目录

本地文件上传FTP或远程目录

时间:2021-06-20 18:15:04

相关推荐

本地文件上传FTP或远程目录

1.上传到FTP

/// <summary>/// 文件上传FTP/// </summary>/// <param name="localFile"></param>/// <param name="workDate"></param>/// <param name="batchNo"></param>/// <returns></returns>public bool UploadFiles1(string localFile,string workDate,string batchNo){string FTPServer = string.Empty;string FTPPort = string.Empty;string FTPUser = string.Empty;string FTPPwd = string.Empty;string SendDir = string.Empty;string dir = string.Empty;FileStream fs = null;Stream strm = null;try{GetFTPServerCfg("0004", ref FTPServer, ref FTPPort, ref FTPUser, ref FTPPwd,ref SendDir);FileInfo fileInf = new FileInfo(localFile);dir = "ftp://" + FTPServer + "/" + SendDir + "/"+ workDate + "_" + batchNo;string uri = "ftp://" + FTPServer + "/" + SendDir + "/" + workDate + "_" + batchNo +"/"+ fileInf.Name;MakeDir(dir, reqFTP, FTPUser, FTPPwd);Connect(uri, FTPUser, FTPPwd); // 默认为true,连接不会被关闭// 在一个命令之后被执行reqFTP.KeepAlive = false;// 指定执行什么命令reqFTP.Method = WebRequestMethods.Ftp.UploadFile;// 上传文件时通知服务器文件的大小reqFTP.ContentLength = fileInf.Length;// 缓冲大小设置为kb int buffLength = 2048;byte[] buff = new byte[buffLength];int contentLen;// 打开一个文件流(System.IO.FileStream) 去读上传的文件fs = fileInf.OpenRead();// 把上传的文件写入流strm = reqFTP.GetRequestStream();// 每次读文件流的kbcontentLen = fs.Read(buff, 0, buffLength);// 流内容没有结束while (contentLen != 0){// 把内容从file stream 写入upload stream strm.Write(buff, 0, contentLen);contentLen = fs.Read(buff, 0, buffLength);}return true;}catch (Exception ex){//SystemMessge.Warning(ex.Message, "上传出错");return false;}finally{// 关闭两个流if (strm != null){strm.Close();}if (fs != null){fs.Close();}}}/// <summary> /// 创建文件夹 /// </summary> public void MakeDir(string uri, FtpWebRequest reqFTP, string ftpUserID, string ftpPassword,string fileName){try{reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);//中文文件名//判断文件夹是否存在 不存在就创建(只能创建一级目录)string line = reader.ReadLine();while (line != null){if (line.Contains(fileName)){response.Close();reader.Close();return;}line = reader.ReadLine();}reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));reqFTP.Method = WebRequestMethods.Ftp.MakeDirectory;reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);reqFTP.UseBinary = true;response = (FtpWebResponse)reqFTP.GetResponse();Stream ftpStream = response.GetResponseStream();ftpStream.Close();reader.Close();response.Close();}catch (Exception ex){}}#region 连接服务器/// <summary>/// 连接服务器/// </summary>/// <param name="path">FTP地址</param>/// <param name="ftpUserID">用户名</param>/// <param name="ftpPassword">密码</param>private void Connect(String path ,string ftpUserID,string ftpPassword){// 根据uri创建FtpWebRequest对象reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(path));// 指定数据传输类型reqFTP.UseBinary = true;// ftp用户名和密码reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);reqFTP.KeepAlive = false;}#endregion

2.上传到远程目录

//导完一个TANO对应的指令则上传到FTPDir += "\\" + WorkDate + "_" + BatchNo;List<FileInfo> files = new List<FileInfo>();//获取文件夹下所有需要上传文件files.AddRange(new DirectoryInfo(Dir).GetFiles());log.Info(string.Format("开始执行本地划款指令上传远程服务器功能"));GetFTPServerCfg("0005", ref FTPServer, ref FTPPort, ref FTPUser, ref FTPPwd, ref SendDir);SendDir = @"\\" + FTPServer + @"\" + SendDir + WorkDate + "_" + BatchNo;//判断远程文件夹是否存在,不存在则创建if (!Directory.Exists(SendDir)){Directory.CreateDirectory(SendDir);}foreach (FileInfo file in files) {UploadFiles(Dir+"\\"+file.Name,SendDir, file.Name);} /// <summary>/// 文件上传FTP/// </summary>/// <param name="localFile"></param>/// <param name="SendDir"></param>/// <param name="fileName"></param>/// <returns></returns>public void UploadFiles(string localFile, string SendDir,string fileName){// 创建WebClient实例File.Copy(localFile, SendDir + "/" + fileName, true);}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。