• C#相关FTP操作


    C# 相关 FTP(File Transfer Protocol) 操作

    1.获取文件目录

    UsePassive:需要设置为false。 使用被动模式,因为客户端防火墙的存在,所以为了确保数据可以正常传输,所有采用被动模式。

    UseBinary:指示文件的传输类型,true 指示二进制数据,false指示数据为为本,默认为true。

        /// <summary>  
        /// 根据ftp路径返回目录下的文件名称
        /// </summary>  
        public string[] GetFilesDetailList(string path)
        {	
            List<string> listFileNames = new List<string>();
            FtpWebRequest ftp;
            ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri(path));
            ftp.UsePassive = false;
            //ftp.UseBinary = true;
            ftp.Credentials = new NetworkCredential("Skills", "Skills"); //用户名密码
            ftp.Method = WebRequestMethods.Ftp.ListDirectory; //只带文件名
    
            var stream = ftp.GetResponse().GetResponseStream();
    
            StreamReader reader = new StreamReader(stream);
            string line;
            while ((line = reader.ReadLine()) != null)
            {
                listFileNames.Add(line);
            }
            reader.Close();
            return listFileNames.ToArray();
        }
    

    2.下载文件

        /// <summary>  
        /// 下载文件
        /// </summary>  
        public void DownloadFile(string filePath)
        {
            FtpWebRequest ftp;
            ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri(filePath));
            ftp.UsePassive = false;
            ftp.UseBinary = true;
            ftp.Credentials = new NetworkCredential("Skills", "Skills"); //用户名密码
            ftp.Method = WebRequestMethods.Ftp.DownloadFile;
            Stream stream = ftp.GetResponse().GetResponseStream();
    
            //Save file
            string fileName = Path.GetFileName(filePath);
            FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate);
            int bufferSize = 1024;
            byte[] buffer = new byte[bufferSize];
            int readCount = stream.Read(buffer, 0, bufferSize);
            while (readCount > 0)
            {
                fs.Write(buffer, 0, readCount);
                readCount = stream.Read(buffer, 0, bufferSize);
            }
            fs.Close();
            stream.Close();
        }
    

    3.获取文件大小

            /// <summary>  
            /// 获取指定文件大小  
            /// </summary>  
            public long GetFileSize(string filename)
            {
                FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(filename));
                reqFTP.Method = WebRequestMethods.Ftp.GetFileSize; //获取文件大小
                reqFTP.UseBinary = true;
                reqFTP.Credentials = new NetworkCredential("Skills", "Skills");
                return reqFTP.GetResponse().ContentLength;
            }
    

    学习自:https://www.cnblogs.com/rushme/p/6690912.html

  • 相关阅读:
    HTTP解析
    Linux(CentOS)常用命令
    Windows下虚拟Linux
    国内静态文件CDN服务介绍 国内js公共库
    吐槽一下csdn和博客园
    项目托管 网站 小记
    微软2013年校园实习生招聘笔试题及答案
    最近在折腾VPS(持续完善)
    spring MVC +freemarker + easyui 实现sql查询和执行小工具总结
    Hessian 接口使用示例总结
  • 原文地址:https://www.cnblogs.com/-Tiger/p/8682592.html
Copyright © 2020-2023  润新知