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


    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"   />
     
    就可以解决了。
  • 相关阅读:
    36_Cache Aside Pattern缓存+数据库读写模式的分析
    35_亿级流量商品详情页的多级缓存架构以及架构中每一层的意义
    34_redis阶段性总结:1T以上海量数据+10万以上QPS高并发+99.99%高可用
    33_redis在实践中的一些常见问题以及优化思路(包含linux内核参数优化)
    正则表达式全部符号解释
    如何正确学习JavaScript
    2015阿里校招前端笔试题
    前端面试总结2
    前端面试总结
    通俗易懂的来讲讲DOM
  • 原文地址:https://www.cnblogs.com/wolfocme110/p/3921776.html
Copyright © 2020-2023  润新知