zoukankan      html  css  js  c++  java
  • C#调用FTP服务 实现上传下载获取

    谢大哥  https://www.cnblogs.com/qiren5761/archive/2010/01/22/1654496.html

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    using System.IO;
    using System.Net;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                //FTPUploadFile("127.0.0.1/zwx" , "administrator", "123123", "e:\饭卡记录清单.xls");
                //FTPDownloadFile("127.0.0.1/zwx", "administrator", "123123", "d:", "123.xls", "饭卡记录清单.xls");
                string[] fileList = FTPGetFileList("127.0.0.1/zwx/1", "administrator", "123123");
                for (int i = 0; i < fileList.Length; i++)
                {
                    Console.WriteLine(fileList[i]);
                }
    
                Console.Read();
            }
    
            #region FTP获取文件列表
    
            /// <summary>
            /// FTP获取文件列表
            /// </summary>
            /// <param name="ftpServerIP"></param>
            /// <param name="ftpUserID"></param>
            /// <param name="ftpPassword"></param>
            /// <returns></returns>
            private static string[] FTPGetFileList(string ftpServerIP, string ftpUserID, string ftpPassword)
            {
                //响应结果
                StringBuilder result = new StringBuilder();
    
                //FTP请求
                FtpWebRequest ftpRequest = null;
    
                //FTP响应
                WebResponse ftpResponse = null;
    
                //FTP响应流
                StreamReader ftpResponsStream = null;
    
                try
                {
                    //生成FTP请求
                    ftpRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/"));
    
                    //设置文件传输类型
                    ftpRequest.UseBinary = true;
    
                    //FTP登录
                    ftpRequest.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
    
                    //设置FTP方法
                    ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory;
    
                    //生成FTP响应
                    ftpResponse = ftpRequest.GetResponse();
    
                    //FTP响应流
                    ftpResponsStream = new StreamReader(ftpResponse.GetResponseStream());
    
                    string line = ftpResponsStream.ReadLine();
    
                    while (line != null)
                    {
                        result.Append(line);
                        result.Append("
    ");
                        line = ftpResponsStream.ReadLine();
                    }
    
                    //去掉结果列表中最后一个换行
                    result.Remove(result.ToString().LastIndexOf('
    '), 1);
    
                    //返回结果
                    return result.ToString().Split('
    ');
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    return (null);
                }
                finally
                {
                    if (ftpResponsStream != null)
                    {
                        ftpResponsStream.Close();
                    }
    
                    if (ftpResponse != null)
                    {
                        ftpResponse.Close();
                    }
                }
            }
    
            #endregion
    
            #region FTP下载文件
    
            /// <summary>
            /// FTP下载文件
            /// </summary>
            /// <param name="ftpServerIP">FTP服务器IP</param>
            /// <param name="ftpUserID">FTP登录帐号</param>
            /// <param name="ftpPassword">FTP登录密码</param>
            /// <param name="saveFilePath">保存文件路径</param>
            /// <param name="saveFileName">保存文件名</param>
            /// <param name="downloadFileName">下载文件名</param>
            private static void FTPDownloadFile(string ftpServerIP, string ftpUserID, string ftpPassword,
                string saveFilePath, string saveFileName, string downloadFileName)
            {
                //定义FTP请求对象
                FtpWebRequest ftpRequest = null;
                //定义FTP响应对象
                FtpWebResponse ftpResponse = null;
    
                //存储流
                FileStream saveStream = null;
                //FTP数据流
                Stream ftpStream = null;
    
                try
                {
                    //生成下载文件
                    saveStream = new FileStream(saveFilePath + "\" + saveFileName, FileMode.Create);
    
                    //生成FTP请求对象
                    ftpRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/" + downloadFileName));
    
                    //设置下载文件方法
                    ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile;
    
                    //设置文件传输类型
                    ftpRequest.UseBinary = true;
    
                    //设置登录FTP帐号和密码
                    ftpRequest.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
    
                    //生成FTP响应对象
                    ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
    
                    //获取FTP响应流对象
                    ftpStream = ftpResponse.GetResponseStream();
    
                    //响应数据长度
                    long cl = ftpResponse.ContentLength;
    
                    int bufferSize = 2048;
    
                    int readCount;
    
                    byte[] buffer = new byte[bufferSize];
    
                    //接收FTP文件流
                    readCount = ftpStream.Read(buffer, 0, bufferSize);
    
                    while (readCount > 0)
                    {
                        saveStream.Write(buffer, 0, readCount);
    
                        readCount = ftpStream.Read(buffer, 0, bufferSize);
                    }
    
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    if (ftpStream != null)
                    {
                        ftpStream.Close();
                    }
                   
                    if (saveStream != null)
                    {
                        saveStream.Close();
                    }
    
                    if (ftpResponse != null)
                    {
                        ftpResponse.Close();
                    }
                }
            }
    
            #endregion
    
            #region FTP上传文件
    
            /// <summary>
            /// FTP上传文件
            /// </summary>
            /// <param name="ftpServerIP">FTP服务器IP</param>
            /// <param name="ftpUserID">FTP登录帐号</param>
            /// <param name="ftpPassword">FTP登录密码</param>
            /// <param name="filename">上文件文件名(绝对路径)</param>
            private static void FTPUploadFile(string ftpServerIP, string ftpUserID, string ftpPassword, string filename)
            {
                //上传文件
                FileInfo uploadFile = null;
               
                //上传文件流
                FileStream uploadFileStream = null;
    
                //FTP请求对象
                FtpWebRequest ftpRequest = null;
    
                //FTP流
                Stream ftpStream = null;
    
                try
                {
                    //获取上传文件
                    uploadFile = new FileInfo(filename);
    
                    //创建FtpWebRequest对象
                    ftpRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/" + uploadFile.Name));
    
                    //FTP登录
                    ftpRequest.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
    
                    // 默认为true,连接不会被关闭
                    // 在一个命令之后被执行
                    ftpRequest.KeepAlive = false;
    
                    //FTP请求执行方法
                    ftpRequest.Method = WebRequestMethods.Ftp.UploadFile;
    
                    // 指定数据传输类型
                    ftpRequest.UseBinary = true;
    
                    // 上传文件时通知服务器文件的大小
                    ftpRequest.ContentLength = uploadFile.Length;
    
                    // 缓冲大小设置为2kb
                    int buffLength = 2048;
    
                    byte[] buff = new byte[buffLength];
                    int contentLen;
    
                    // 打开一个文件流读上传的文件
                    uploadFileStream = uploadFile.OpenRead();
    
                    // 把上传的文件写入流
                    ftpStream = ftpRequest.GetRequestStream();
    
                    // 每次读文件流的2kb
                    contentLen = uploadFileStream.Read(buff, 0, buffLength);
    
                    // 流内容没有结束
                    while (contentLen != 0)
                    {
                        // 把内容从file stream 写入 upload stream
                        ftpStream.Write(buff, 0, contentLen);
    
                        contentLen = uploadFileStream.Read(buff, 0, buffLength);
                    }
    
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    if (uploadFileStream != null)
                    {
                        uploadFileStream.Close();
                    }
    
                    if (ftpStream != null)
                    {
                        ftpStream.Close();
                    }
                }
            }
    
            #endregion
        }
    }
  • 相关阅读:
    轻松记账方法(A)
    个人学习进度(第八周)
    个人学习进度(第八周)
    Web版四则运算
    个人学习进度(第七周)
    个人学习进度(第六周)
    数组的子数组和最大值
    个人学习进度(第五周)
    个人学习进度(第四周)
    个人学习进度(第三周)
  • 原文地址:https://www.cnblogs.com/ning-xiaowo/p/13177606.html
Copyright © 2011-2022 走看看