从FTP服务器端下载PCD点云文件到本地文件夹
关于从ftp服务器下载文件到本地文件夹的操作,具体代码如下:
1 /// <summary> 2 /// 从服务器下载PCD点云文件到本地 3 /// </summary> 4 public void DownloadPCDFile() 5 { 6 //登入到ftp的账号 7 string ftpUserName = "administrator"; 8 //登入到ftp的密码 9 string ftpUserPwd = "beris.ZDH"; 10 //下载后的文件存放路径 11 string downloadUrl = "D:\\PointClouds"; 12 //需要下载的文件名 13 string fileName = "materialPile_downsample.pcd"; 14 //需要现在的文件在ftp上的完整路径 15 string fileUploadPath = "ftp://192.168.2.43/LatestPCLFile"; 16 Uri uri = new Uri(fileUploadPath + "/" + fileName); 17 //下载后存放的路径 18 string FileName = Path.GetFullPath(downloadUrl) + Path.DirectorySeparatorChar.ToString() + Path.GetFileName(uri.LocalPath); 19 20 //创建文件流 21 FileStream fs = null; 22 Stream responseStream = null; 23 try 24 { 25 //创建一个与FTP服务器联系的FtpWebRequest对象 26 FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri); 27 //设置请求的方法是FTP文件下载 28 request.Method = WebRequestMethods.Ftp.DownloadFile; 29 //连接登录FTP服务器 30 request.Credentials = new NetworkCredential(ftpUserName, ftpUserPwd); 31 //获取一个请求响应对象 32 FtpWebResponse response = (FtpWebResponse)request.GetResponse(); 33 //获取请求的响应流 34 responseStream = response.GetResponseStream(); 35 //判断本地文件是否存在,如果存在,则打开和重写本地文件 36 if (File.Exists(FileName)) 37 { 38 fs = File.Open(FileName, FileMode.Open, FileAccess.ReadWrite); 39 } 40 else 41 { 42 fs = File.Create(FileName); 43 } 44 45 if (fs != null) 46 { 47 int buffer_count = 65536; 48 byte[] buffer = new byte[buffer_count]; 49 int size = 0; 50 while ((size = responseStream.Read(buffer, 0, buffer_count)) > 0) 51 { 52 fs.Write(buffer, 0, size); 53 } 54 fs.Flush(); 55 fs.Close(); 56 responseStream.Close(); 57 } 58 } 59 finally 60 { 61 if (fs != null) 62 { 63 fs.Close(); 64 } 65 if (responseStream != null) 66 { 67 responseStream.Close(); 68 } 69 } 70 }

浙公网安备 33010602011771号