zoukankan      html  css  js  c++  java
  • C#.net从ftp下载文件到本地

    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"   />

    就可以解决了。

  • 相关阅读:
    Electron中git, npm,webpack使用
    Luogu_2061_[USACO07OPEN]城市的地平线City Horizon
    Luogu_1080_国王游戏
    Luogu_2878_[USACO07JAN]保护花朵Protecting the Flowers
    GYOJ_1812_股票(stock)
    JXJJOI2018_三题
    JXJJOI2018_T3_catch
    JXJJOI2018_T1_market
    JXJJOI2018_T2_tank
    Luogu_2876_[USACO07JAN]解决问题Problem Solving
  • 原文地址:https://www.cnblogs.com/grj001/p/12224515.html
Copyright © 2011-2022 走看看