码迷,mamicode.com
首页 > Web开发 > 详细

c#.net从ftp下载文件到本地

时间:2014-08-19 14:07:24      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   io   文件   ar   div   

c#.net从ftp下载文件到本地   

  /*首先从配置文件读取ftp的登录信息*/

 string TempFolderPath = System.Configuration.ConfigurationManager.AppSettings["TempFolderPath"].ToString();
 string FtpUserName = System.Configuration.ConfigurationManager.AppSettings["FtpUserName"].ToString();
 string FtpPassWord = System.Configuration.ConfigurationManager.AppSettings["FtpPassWord"].ToString();
 string LocalFileExistsOperation = System.Configuration.ConfigurationManager.AppSettings["LocalFileExistsOperation"].ToString();
 

Uri uri = new Uri(FtpPath);
string FileName = Path.GetFullPath(TempFolderPath) + Path.DirectorySeparatorChar.ToString() +  Path.GetFileName(uri.LocalPath); 

//创建一个文件流
            FileStream fs = null;
            Stream responseStream = null;
            try
            {
                //创建一个与FTP服务器联系的FtpWebRequest对象
                FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri);
                //设置请求的方法是FTP文件下载
                request.Method = WebRequestMethods.Ftp.DownloadFile;

                //连接登录FTP服务器
                request.Credentials = new NetworkCredential(FtpUserName, FtpPassWord);

                //获取一个请求响应对象
                FtpWebResponse response = (FtpWebResponse)request.GetResponse();
                //获取请求的响应流
                responseStream = response.GetResponseStream();

                //判断本地文件是否存在,如果存在,则打开和重写本地文件

                if (File.Exists(FileName))               

                {
                      if (LocalFileExistsOperation == "write")

                      { 
                              fs = File.Open(FileName, FileMode.Open, FileAccess.ReadWrite);

                      } 
                }

                //判断本地文件是否存在,如果不存在,则创建本地文件
                else             

                {
                        fs = File.Create(FileName);
                }

                if (fs != null)
                {

                    int buffer_count = 65536;
                    byte[] buffer = new byte[buffer_count];
                    int size = 0;
                    while ((size = responseStream.Read(buffer, 0, buffer_count)) > 0)
                    {
                        fs.Write(buffer, 0, size);

                    }
                    fs.Flush();
                    fs.Close();
                    responseStream.Close();
                }
            }
            finally
            {
                if (fs != null)
                    fs.Close();
                if (responseStream != null)
                    responseStream.Close();
            }

 

 

 

 

 

 

 如果遇到服务器端下载路径包含汉字的话,就在配置文件web.config中的<system.web>节点下添加:

 

  <globalization   requestEncoding="GB2312"   responseEncoding="GB2312"   uiCulture="zh-CN"     culture="zh-CN"   fileEncoding="GB2312"   />
就可以解决了。

 

c#.net从ftp下载文件到本地,布布扣,bubuko.com

c#.net从ftp下载文件到本地

标签:style   blog   color   os   io   文件   ar   div   

原文地址:http://www.cnblogs.com/wolfocme110/p/3921776.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!