zoukankan      html  css  js  c++  java
  • C# ftp 上传、下载、删除

      1  public class FtpHelper
      2     {
      3         public static readonly FtpHelper Instance = new FtpHelper();
      4 
      5         /// <summary>
      6         /// 取得文件名
      7         /// </summary>
      8         /// <param name="ftpPath">ftp路径</param>
      9         /// <returns></returns>
     10         public string[] GetFilePath(string userId, string pwd, string ftpPath)
     11         {
     12             string[] downloadFiles;
     13             StringBuilder result = new StringBuilder();
     14             FtpWebRequest reqFTP;
     15             try
     16             {
     17                 reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpPath));
     18                 reqFTP.UseBinary = true;
     19                 reqFTP.Credentials = new NetworkCredential(userId, pwd);
     20                 reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;
     21                 reqFTP.UsePassive = false;
     22                 WebResponse response = reqFTP.GetResponse();
     23                 StreamReader reader = new StreamReader(response.GetResponseStream());
     24                 string line = reader.ReadLine();
     25                 while (line != null)
     26                 {
     27                     result.Append(line);
     28                     result.Append("
    ");
     29                     line = reader.ReadLine();
     30                 }
     31                 result.Remove(result.ToString().LastIndexOf('
    '), 1);
     32                 reader.Close();
     33                 response.Close();
     34                 return result.ToString().Split('
    ');
     35             }
     36             catch (Exception ex)
     37             {
     38                 downloadFiles = null;
     39                 return downloadFiles;
     40             }
     41         }
     42 
     43         //ftp的上传功能
     44         public void Upload(string userId, string pwd, string filename, string ftpPath)
     45         {
     46             FileInfo fileInf = new FileInfo(filename);
     47             FtpWebRequest reqFTP;
     48             // 根据uri创建FtpWebRequest对象 
     49             reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpPath + fileInf.Name));
     50             // ftp用户名和密码
     51             reqFTP.Credentials = new NetworkCredential(userId, pwd);
     52 
     53             reqFTP.UsePassive = false;
     54             // 默认为true,连接不会被关闭
     55             // 在一个命令之后被执行
     56             reqFTP.KeepAlive = false;
     57             // 指定执行什么命令
     58             reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
     59             // 指定数据传输类型
     60             reqFTP.UseBinary = true;
     61             // 上传文件时通知服务器文件的大小
     62             reqFTP.ContentLength = fileInf.Length;
     63             // 缓冲大小设置为2kb
     64             int buffLength = 2048;
     65             byte[] buff = new byte[buffLength];
     66             int contentLen;
     67             // 打开一个文件流 (System.IO.FileStream) 去读上传的文件
     68             FileStream fs = fileInf.OpenRead();
     69             try
     70             {
     71                 // 把上传的文件写入流
     72                 Stream strm = reqFTP.GetRequestStream();
     73                 // 每次读文件流的2kb
     74                 contentLen = fs.Read(buff, 0, buffLength);
     75                 // 流内容没有结束
     76                 while (contentLen != 0)
     77                 {
     78                     // 把内容从file stream 写入 upload stream
     79                     strm.Write(buff, 0, contentLen);
     80                     contentLen = fs.Read(buff, 0, buffLength);
     81                 }
     82                 // 关闭两个流
     83                 strm.Close();
     84                 fs.Close();
     85             }
     86             catch (Exception ex)
     87             {
     88 
     89             }
     90         }
     91 
     92         public void Delete(string userId, string pwd, string ftpPath, string fileName)
     93         {
     94             FtpWebRequest reqFTP;
     95             try
     96             {
     97                 reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpPath + fileName));
     98                 reqFTP.Method = WebRequestMethods.Ftp.DeleteFile;
     99                 reqFTP.UseBinary = true;
    100                 reqFTP.Credentials = new NetworkCredential(userId, pwd);
    101                 reqFTP.UsePassive = false;
    102                 FtpWebResponse listResponse = (FtpWebResponse)reqFTP.GetResponse();
    103                 string sStatus = listResponse.StatusDescription;
    104             }
    105             catch (Exception ex)
    106             {
    107                 throw ex;
    108             }
    109         }
    110 
    111         //从ftp服务器上下载文件的功能
    112         public void Download(string userId, string pwd, string ftpPath, string filePath, string fileName)
    113         {
    114             FtpWebRequest reqFTP;
    115             try
    116             {
    117                 FileStream outputStream = new FileStream(filePath + "\" + fileName, FileMode.Create);
    118                 reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpPath + fileName));
    119                 reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
    120                 reqFTP.UseBinary = true;
    121                 reqFTP.Credentials = new NetworkCredential(userId, pwd);
    122                 reqFTP.UsePassive = false;
    123                 FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
    124                 Stream ftpStream = response.GetResponseStream();
    125                 long cl = response.ContentLength;
    126                 int bufferSize = 2048;
    127                 int readCount;
    128                 byte[] buffer = new byte[bufferSize];
    129                 readCount = ftpStream.Read(buffer, 0, bufferSize);
    130                 while (readCount > 0)
    131                 {
    132                     outputStream.Write(buffer, 0, readCount);
    133                     readCount = ftpStream.Read(buffer, 0, bufferSize);
    134                 }
    135                 ftpStream.Close();
    136                 outputStream.Close();
    137                 response.Close();
    138 
    139 
    140             }
    141             catch (Exception ex)
    142             {
    143                 throw ex;
    144             }
    145         }
    146 
    147     }

    http://blog.csdn.net/csethcrm/article/details/8139744

    ========================================

    因公司要求,整理公司资源,把现有的资源上传的一个电脑上(在一个同事的电脑上腾出了空间,把所有的资源上传的此电脑上),我在这个电脑上装了SQL2008+serv_u+IIS7,我用的是c# winform+webservice,数据库操作通过webservice进行,上传文件用ftp批量上传,上传整个文件夹,一下是文件夹目录

    文件夹总大小100MB以上,有时候单独一个文件也有10-100mb左右,
    一下是ftp上传代码

    C# code
     
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    public void Upload(string filename,string foldername)
            {
     
                try
                {
                    FileInfo fileInf = new FileInfo(filename);
     
                    string uri = "ftp://" + ftpServerIP + "/" + foldername + "/" + fileInf.Name;
     
                    Connect(uri);//连接
     
                    // 默认为true,连接不会被关闭
                    // 在一个命令之后被执行
                    reqFTP.KeepAlive = false;
     
                    // 指定执行什么命令
     
                    reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
     
                    // 上传文件时通知服务器文件的大小
     
                    reqFTP.ContentLength = fileInf.Length;
     
                    // 缓冲大小设置为kb 
     
                    int buffLength = 2048;
     
                    byte[] buff = new byte[buffLength];
     
                    int contentLen;
     
                    // 打开一个文件流(System.IO.FileStream) 去读上传的文件
     
                    FileStream fs = fileInf.OpenRead();
     
                    try
                    {
     
                        // 把上传的文件写入流
                        Stream strm = reqFTP.GetRequestStream();
     
                        // 每次读文件流的kb
                        contentLen = fs.Read(buff, 0, buffLength);
     
                        // 流内容没有结束
                        while (contentLen != 0)
                        {
                            // 把内容从file stream 写入upload stream 
                            strm.Write(buff, 0, contentLen);
                            contentLen = fs.Read(buff, 0, buffLength);
                        }
     
                        // 关闭两个流
                        strm.Close();
                        fs.Close();
     
                    }
     
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message, "Upload Error");
     
                    }
                }
                catch
                { }
            }

    可以通过遍历批量上传文件,但是上传速度很慢,很慢。上传一个文件夹都要花上半天,我想问有没有办法提高上传速度,或者要用别的上传方法。(用别的方法也可以,因为ftp上传我第一次接触,不太熟悉)请各位给个意见,小弟感激不尽!还有上传的时候要加上进度条。请各位大侠高手们帮忙。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    private void Form1_Load(object sender, EventArgs e)
            {
                ftpServerIP = "192.168.239.83";
                ftpUserID = "ftptest";
                ftpPassword = "test";
            }
     
            private void btnUpload_Click(object sender, EventArgs e)
            {
                OpenFileDialog opFilDlg = new OpenFileDialog();
                if (opFilDlg.ShowDialog() == DialogResult.OK)
                {
                    Upload(opFilDlg.FileName);
                }
            }
     
          
     
            private void Upload(string filename)
            {
                FileInfo fileInf = new FileInfo(filename);
                string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name;
                FtpWebRequest reqFTP;
                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/" + fileInf.Name));
                reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
                reqFTP.KeepAlive = false;
                reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
                reqFTP.UseBinary = true;
                reqFTP.ContentLength = fileInf.Length;
                int buffLength = 2048;
                byte[] buff = new byte[buffLength];
                int contentLen;
                FileStream fs = fileInf.OpenRead();
                try
                {
                    Stream strm = reqFTP.GetRequestStream();
                    contentLen = fs.Read(buff, 0, buffLength);
                    while (contentLen != 0)
                    {
                        strm.Write(buff, 0, contentLen);
                        contentLen = fs.Read(buff, 0, buffLength);
                    }
                    strm.Close();
                    fs.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "上传出错");
                    return;
                }
                MessageBox.Show("上传成功!");
            }

    参考以上代码。

    http://bbs.csdn.net/topics/391033851

    =============================================================

    net,C#,Ftp各种操作,上传,下载,删除文件,创建目录,删除目录,获得文件列表等            

    using System;

    using System.Collections.Generic;

    using System.Text;

    using System.Net;

    using System.IO;

    using System.Windows.Forms;

    namespace ConvertData

    {

        class FtpUpDown

        {

            string ftpServerIP;

            string ftpUserID;

            string ftpPassword;

            FtpWebRequest reqFTP;

            private void Connect(String path)//连接ftp

            {

                // 根据uri创建FtpWebRequest对象

                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(path));

                // 指定数据传输类型

                reqFTP.UseBinary = true;

                // ftp用户名和密码

                reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);

            }

            public FtpUpDown(string ftpServerIP, string ftpUserID, string ftpPassword)

            {             this.ftpServerIP = ftpServerIP;

                this.ftpUserID = ftpUserID;

                this.ftpPassword = ftpPassword;         }

            //都调用这个

            private string[] GetFileList(string path, string WRMethods)//上面的代码示例了如何从ftp服务器上获得文件列表

            {             string[] downloadFiles;             StringBuilder result = new StringBuilder();             try

                {                 Connect(path);

                    reqFTP.Method = WRMethods;

                    WebResponse response = reqFTP.GetResponse();

                    StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.Default);//中文文件名

                    string line = reader.ReadLine();

                    while (line != null)

                    {

                        result.Append(line);

                        result.Append(" ");

                        line = reader.ReadLine();

                    }

                    // to remove the trailing ' '

                    result.Remove(result.ToString().LastIndexOf(' '), 1);

                    reader.Close();

                    response.Close();

                    return result.ToString().Split(' ');

                }

                catch (Exception ex)

                {                 System.Windows.Forms.MessageBox.Show(ex.Message);

                    downloadFiles = null;

                    return downloadFiles;             }         }

            public string[] GetFileList(string path)//上面的代码示例了如何从ftp服务器上获得文件列表

            {             return GetFileList("ftp://" + ftpServerIP + "/" + path, WebRequestMethods.Ftp.ListDirectory);         }         public string[] GetFileList()//上面的代码示例了如何从ftp服务器上获得文件列表

            {             return GetFileList("ftp://" + ftpServerIP + "/", WebRequestMethods.Ftp.ListDirectory);         }

            public void Upload(string filename) //上面的代码实现了从ftp服务器上载文件的功能

            {             FileInfo fileInf = new FileInfo(filename);

                string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name;

                Connect(uri);//连接         

                // 默认为true,连接不会被关闭

                // 在一个命令之后被执行

                reqFTP.KeepAlive = false;

                // 指定执行什么命令

                reqFTP.Method = WebRequestMethods.Ftp.UploadFile;

                // 上传文件时通知服务器文件的大小

                reqFTP.ContentLength = fileInf.Length;             // 缓冲大小设置为kb             int buffLength = 2048;             byte[] buff = new byte[buffLength];

                int contentLen;

                // 打开一个文件流(System.IO.FileStream) 去读上传的文件

                FileStream fs = fileInf.OpenRead();

                try

                {

                    // 把上传的文件写入流

                    Stream strm = reqFTP.GetRequestStream();

                    // 每次读文件流的kb

                    contentLen = fs.Read(buff, 0, buffLength);

                    // 流内容没有结束

                    while (contentLen != 0)

                    {                     // 把内容从file stream 写入upload stream                     strm.Write(buff, 0, contentLen);                     contentLen = fs.Read(buff, 0, buffLength);

                    }

                    // 关闭两个流

                    strm.Close();

                    fs.Close();

                }

                catch (Exception ex)

                {

                    MessageBox.Show(ex.Message, "Upload Error");

                }

            }

            public bool Download(string filePath, string fileName, out string errorinfo)////上面的代码实现了从ftp服务器下载文件的功能

            {             try

                {                 String onlyFileName = Path.GetFileName(fileName);

                    string newFileName = filePath + "\" + onlyFileName;

                    if (File.Exists(newFileName))

                    {

                        errorinfo = string.Format("本地文件{0}已存在,无法下载", newFileName);                     return false;                 }                 string url = "ftp://" + ftpServerIP + "/" + fileName;                 Connect(url);//连接                 reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);                 FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();                 Stream ftpStream = response.GetResponseStream();                 long cl = response.ContentLength;                 int bufferSize = 2048;                 int readCount;                 byte[] buffer = new byte[bufferSize];                 readCount = ftpStream.Read(buffer, 0, bufferSize);

                    FileStream outputStream = new FileStream(newFileName, FileMode.Create);                 while (readCount > 0)

                    {                     outputStream.Write(buffer, 0, readCount);                     readCount = ftpStream.Read(buffer, 0, bufferSize);                 }                 ftpStream.Close();                 outputStream.Close();                 response.Close();

                    errorinfo = "";

                    return true;

                }

                catch (Exception ex)

                {                 errorinfo = string.Format("因{0},无法下载", ex.Message);

                    return false;

                }

            }

            //删除文件

            public void DeleteFileName(string fileName)

            {             try

                {                 FileInfo fileInf = new FileInfo(fileName);

                    string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name;

                    Connect(uri);//连接         

                    // 默认为true,连接不会被关闭

                    // 在一个命令之后被执行

                    reqFTP.KeepAlive = false;

                    // 指定执行什么命令

                    reqFTP.Method = WebRequestMethods.Ftp.DeleteFile;

                    FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();                 response.Close();

                }

                catch (Exception ex)

                {

                    MessageBox.Show(ex.Message, "删除错误");

                }

            }

            //创建目录

            public void MakeDir(string dirName)

            {             try

                {                 string uri = "ftp://" + ftpServerIP + "/" + dirName;

                    Connect(uri);//连接      

                    reqFTP.Method = WebRequestMethods.Ftp.MakeDirectory;

                    FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();

                    response.Close();

                }

                catch (Exception ex)

                {

                    MessageBox.Show(ex.Message);

                }

            }

            //删除目录

            public void delDir(string dirName)

            {             try

                {                 string uri = "ftp://" + ftpServerIP + "/" + dirName;

                    Connect(uri);//连接      

                    reqFTP.Method = WebRequestMethods.Ftp.RemoveDirectory;

                    FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();

                    response.Close();

                }

                catch (Exception ex)

                {

                    MessageBox.Show(ex.Message);

                }

            }

            //获得文件大小

            public long GetFileSize(string filename)

            {

                long fileSize = 0;

                try

                {

                    FileInfo fileInf = new FileInfo(filename);

                    string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name;

                    Connect(uri);//连接      

                    reqFTP.Method = WebRequestMethods.Ftp.GetFileSize;

                    FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();

                    fileSize = response.ContentLength;

                    response.Close();

                }

                catch (Exception ex)

                {

                    MessageBox.Show(ex.Message);

                }

                return fileSize;

            }

            //文件改名

            public void Rename(string currentFilename, string newFilename)

            {             try

                {                 FileInfo fileInf = new FileInfo(currentFilename);

                    string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name;

                    Connect(uri);//连接

                    reqFTP.Method = WebRequestMethods.Ftp.Rename;

                    reqFTP.RenameTo = newFilename;

                    FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();

                    //Stream ftpStream = response.GetResponseStream();

                    //ftpStream.Close();

                    response.Close();

                }

                catch (Exception ex)

                {

                    MessageBox.Show(ex.Message);

                }

            }

            //获得文件明晰

            public string[] GetFilesDetailList()

            {

                return GetFileList("ftp://" + ftpServerIP + "/", WebRequestMethods.Ftp.ListDirectoryDetails);

            }

            //获得文件明晰

            public string[] GetFilesDetailList(string path)

            {

                return GetFileList("ftp://" + ftpServerIP + "/" + path, WebRequestMethods.Ftp.ListDirectoryDetails);

            }

        } }

    -----------------------

    测试

           //获得文件列表

           private void button1_Click(object sender, EventArgs e)

            {

                FtpUpDown ftpUpDown = new FtpUpDown(ConvertData.Properties.Settings.Default.ftpServerIP, ConvertData.Properties.Settings.Default.ftpUserID, ConvertData.Properties.Settings.Default.ftpPassword);

                string[] str = ftpUpDown.GetFileList("2005");

                richTextBox1.Lines = str;

            }

            //下载

            private void button2_Click(object sender, EventArgs e)

            {

                FtpUpDown ftpUpDown = new FtpUpDown(ConvertData.Properties.Settings.Default.ftpServerIP, ConvertData.Properties.Settings.Default.ftpUserID, ConvertData.Properties.Settings.Default.ftpPassword);

                ftpUpDown.Download("c:\", "2007/11/01/57070.pdf");

            }

            //上传

            private void button3_Click(object sender, EventArgs e)

            {

                FtpUpDown ftpUpDown = new FtpUpDown(ConvertData.Properties.Settings.Default.ftpServerIP, ConvertData.Properties.Settings.Default.ftpUserID, ConvertData.Properties.Settings.Default.ftpPassword);

                ftpUpDown.Upload("c:\57070.pdf");

            }

    =================================================

    C# ftp检测服务器是否存在目录,不存在就创建

    using System.Net;
    using System.Net.Sockets;

            /// <summary>
            /// 检测目录是否存在
            /// </summary>
            /// <param name="ServerIP"></param>
            /// <param name="pFtpUserID"></param>
            /// <param name="pFtpPW"></param>
            /// <param name="FileSource"></param>

    using System.Net;
    using System.Net.Sockets;

            /// <summary>
            /// 检测目录是否存在
            /// </summary>
            /// <param name="ServerIP"></param>
            /// <param name="pFtpUserID"></param>
            /// <param name="pFtpPW"></param>
            /// <param name="FileSource"></param>
            /// <param name="FileCategory"></param>
            /// <returns></returns>
            public static bool checkDirectory(string ServerIP, string pFtpUserID, string pFtpPW, string FileSource, string FileCategory)
            {
                //检测目录是否存在
                Uri uri = new Uri("ftp://" + ServerIP + "/" + FileSource + "/");
                if (!DirectoryIsExist(uri, pFtpUserID, pFtpPW))
                {
                    //创建目录
                    uri = new Uri("ftp://" + ServerIP + "/" + FileSource);
                    if (CreateDirectory(uri, pFtpUserID, pFtpPW))
                    {
                        //检测下一级目录是否存在
                        uri = new Uri("ftp://" + ServerIP + "/" + FileSource + "/" + FileCategory + "/");
                        if (!DirectoryIsExist(uri, pFtpUserID, pFtpPW))
                        {
                            //创建目录
                            uri = new Uri("ftp://" + ServerIP + "/" + FileSource + "/" + FileCategory);
                            if (CreateDirectory(uri, pFtpUserID, pFtpPW))
                            {
                                return true;
                            }
                            else { XtraMessageBox.Show("创建目录:{0}失败", FileCategory); return false; }
                        }
                        else
                        {
                            return true;
                        }
                    }
                    else { XtraMessageBox.Show("创建目录:{0}失败", FileSource); return false; }
                }
                else
                {
                    //检测下一级目录是否存在
                    uri = new Uri("ftp://" + ServerIP + "/" + FileSource + "/" + FileCategory + "/");
                    if (!DirectoryIsExist(uri, pFtpUserID, pFtpPW))
                    {
                        //创建目录
                        uri = new Uri("ftp://" + ServerIP + "/" + FileSource + "/" + FileCategory);
                        if (CreateDirectory(uri, pFtpUserID, pFtpPW))
                        {
                            return true;
                        }
                        else { XtraMessageBox.Show("创建目录:{0}失败", FileCategory); return false; }
                    }
                    else
                    {
                        return true;
                    }
                }
            }
            /// <summary>
            /// ftp创建目录(创建文件夹)
            /// </summary>
            /// <param name="IP">IP服务地址</param>
            /// <param name="UserName">登陆账号</param>
            /// <param name="UserPass">密码</param>
            /// <param name="FileSource"></param>
            /// <param name="FileCategory"></param>
            /// <returns></returns>
            public static bool CreateDirectory(Uri IP, string UserName, string UserPass)
            {
                try
                {
                    FtpWebRequest FTP = (FtpWebRequest)FtpWebRequest.Create(IP);
                    FTP.Credentials = new NetworkCredential(UserName, UserPass);
                    FTP.Proxy = null;
                    FTP.KeepAlive = false;
                    FTP.Method = WebRequestMethods.Ftp.MakeDirectory;
                    FTP.UseBinary = true;
                    FtpWebResponse response = FTP.GetResponse() as FtpWebResponse;
                    response.Close();
                    return true;
                }
                catch
                {
                    return false;
                }
            }
            /// <summary>
            /// 检测目录是否存在
            /// </summary>
            /// <param name="pFtpServerIP"></param>
            /// <param name="pFtpUserID"></param>
            /// <param name="pFtpPW"></param>
            /// <returns>false不存在,true存在</returns>
            public static bool DirectoryIsExist(Uri pFtpServerIP, string pFtpUserID, string pFtpPW)
            {
                string[] value = GetFileList(pFtpServerIP, pFtpUserID, pFtpPW);
                if (value == null)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
            public static string[] GetFileList(Uri pFtpServerIP, string pFtpUserID, string pFtpPW)
            {
                StringBuilder result = new StringBuilder();
                try
                {
                    FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(pFtpServerIP);
                    reqFTP.UseBinary = true;
                    reqFTP.Credentials = new NetworkCredential(pFtpUserID, pFtpPW);
                    reqFTP.Method = WebRequestMethods.Ftp.ListDirectoryDetails;

                    WebResponse response = reqFTP.GetResponse();
                    StreamReader reader = new StreamReader(response.GetResponseStream());
                    string line = reader.ReadLine();
                    while (line != null)
                    {
                        result.Append(line);
                        result.Append(" ");
                        line = reader.ReadLine();
                    }
                    reader.Close();
                    response.Close();
                    return result.ToString().Split(' ');
                }
                catch
                {
                    return null;
                }
            }

     

    ==========================================================

          

            C#对FTP的操作(上传,下载,重命名文件,删除文件,文件存在检查)

    http://blog.csdn.net/hejialin666/article/details/3522815

    • using System;
    • using System.Collections.Generic;
    • using System.Text;
    • using System.Net;
    • using System.Data;
    • using System.IO;
    • using System.ComponentModel;
    • namespace Common
    • {
    •     public class FTPClient
    •     {
    •         private string ftpServerIP = String.Empty;
    •         private string ftpUser = String.Empty;
    •         private string ftpPassword = String.Empty;
    •         private string ftpRootURL = String.Empty;        
    •         public FTPClient(string url, string userid,string password)
    •         {
    •             this.ftpServerIP = ftp的IP地址;
    •             this.ftpUser = 用户名;
    •             this.ftpPassword = 密码;
    •             this.ftpRootURL = "ftp://" + url + "/";
    •         }
    •         /// <summary>
    •         /// 上传
    •         /// </summary>
    •         /// <param name="localFile">本地文件绝对路径</param>
    •         /// <param name="ftpPath">上传到ftp的路径</param>
    •         /// <param name="ftpFileName">上传到ftp的文件名</param>
    •         public bool fileUpload(FileInfo localFile, string ftpPath, string ftpFileName)
    •         {
    •             bool success = false;
    •             FtpWebRequest ftpWebRequest = null;
    •             FileStream localFileStream = null;
    •             Stream requestStream = null;
    •             try
    •             {
    •                 string uri = ftpRootURL + ftpPath + ftpFileName;
    •                 ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
    •                 ftpWebRequest.Credentials = new NetworkCredential(ftpUser, ftpPassword);
    •                 ftpWebRequest.UseBinary = true;
    •                 ftpWebRequest.KeepAlive = false;
    •                 ftpWebRequest.Method = WebRequestMethods.Ftp.UploadFile;
    •                 ftpWebRequest.ContentLength = localFile.Length;
    •                 int buffLength = 2048;
    •                 byte[] buff = new byte[buffLength];
    •                 int contentLen;
    •                 localFileStream = localFile.OpenRead();
    •                 requestStream = ftpWebRequest.GetRequestStream();
    •                 contentLen = localFileStream.Read(buff, 0, buffLength);
    •                 while (contentLen != 0)
    •                 {
    •                     requestStream.Write(buff, 0, contentLen);
    •                     contentLen = localFileStream.Read(buff, 0, buffLength);
    •                 }
    •                 success = true;
    •             }
    •             catch (Exception)
    •             {
    •                 success = false;
    •             }
    •             finally
    •             { 
    •                 if (requestStream != null)
    •                 {
    •                     requestStream.Close();
    •                 }
    •                 if (localFileStream != null)
    •                 {
    •                     localFileStream.Close();
    •                 }
    •             }
    •             return success;
    •         }
    •         /// <summary>
    •         /// 上传文件
    •         /// </summary>
    •         /// <param name="localPath">本地文件地址(没有文件名)</param>
    •         /// <param name="localFileName">本地文件名</param>
    •         /// <param name="ftpPath">上传到ftp的路径</param>
    •         /// <param name="ftpFileName">上传到ftp的文件名</param>
    •         public bool fileUpload(string localPath, string localFileName, string ftpPath, string ftpFileName)
    •         {
    •             bool success = false;
    •             try
    •             {
    •                 FileInfo localFile = new FileInfo(localPath + localFileName);
    •                 if (localFile.Exists)
    •                 {
    •                     success = fileUpload(localFile, ftpPath, ftpFileName);
    •                 }
    •                 else
    •                 {
    •                     success = false;
    •                 }
    •             }
    •             catch (Exception)
    •             {
    •                 success = false;
    •             }
    •             return success;
    •         }
    •         /// <summary>
    •         /// 下载文件
    •         /// </summary>
    •         /// <param name="localPath">本地文件地址(没有文件名)</param>
    •         /// <param name="localFileName">本地文件名</param>
    •         /// <param name="ftpPath">下载的ftp的路径</param>
    •         /// <param name="ftpFileName">下载的ftp的文件名</param>
    •         public bool fileDownload(string localPath, string localFileName, string ftpPath, string ftpFileName)
    •         {
    •             bool success = false;
    •             FtpWebRequest ftpWebRequest = null;
    •             FtpWebResponse ftpWebResponse = null;
    •             Stream ftpResponseStream = null;
    •             FileStream outputStream = null;
    •             try
    •             {
    •                 outputStream = new FileStream(localPath + localFileName, FileMode.Create);
    •                 string uri = ftpRootURL + ftpPath + ftpFileName;
    •                 ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
    •                 ftpWebRequest.Credentials = new NetworkCredential(ftpUser, ftpPassword);
    •                 ftpWebRequest.UseBinary = true;
    •                 ftpWebRequest.Method = WebRequestMethods.Ftp.DownloadFile;
    •                 ftpWebResponse = (FtpWebResponse)ftpWebRequest.GetResponse();
    •                 ftpResponseStream = ftpWebResponse.GetResponseStream();
    •                 long contentLength = ftpWebResponse.ContentLength;
    •                 int bufferSize = 2048;
    •                 byte[] buffer = new byte[bufferSize];
    •                 int readCount;
    •                 readCount = ftpResponseStream.Read(buffer, 0, bufferSize);
    •                 while (readCount > 0)
    •                 {
    •                     outputStream.Write(buffer, 0, readCount);
    •                     readCount = ftpResponseStream.Read(buffer, 0, bufferSize);
    •                 }
    •                 success = true;
    •             }
    •             catch (Exception)
    •             {
    •                 success = false;
    •             }
    •             finally
    •             {
    •                 if (outputStream != null)
    •                 {
    •                     outputStream.Close();
    •                 }
    •                 if (ftpResponseStream != null)
    •                 {
    •                     ftpResponseStream.Close();
    •                 }
    •                 if (ftpWebResponse != null)
    •                 {
    •                     ftpWebResponse.Close();
    •                 }
    •             }
    •             return success;
    •         }
    •         /// <summary>
    •         /// 重命名
    •         /// </summary>
    •         /// <param name="ftpPath">ftp文件路径</param>
    •         /// <param name="currentFilename"></param>
    •         /// <param name="newFilename"></param>
    •         public bool fileRename(string ftpPath, string currentFileName, string newFileName)
    •         {
    •             bool success = false;
    •             FtpWebRequest ftpWebRequest = null;
    •             FtpWebResponse ftpWebResponse = null;
    •             Stream ftpResponseStream = null;
    •             try
    •             {
    •                 string uri = ftpRootURL + ftpPath + currentFileName;
    •                 ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
    •                 ftpWebRequest.Credentials = new NetworkCredential(ftpUser, ftpPassword);
    •                 ftpWebRequest.UseBinary = true;
    •                 ftpWebRequest.Method = WebRequestMethods.Ftp.Rename;
    •                 ftpWebRequest.RenameTo = newFileName;
    •                 
    •                 ftpWebResponse = (FtpWebResponse)ftpWebRequest.GetResponse();
    •                 ftpResponseStream = ftpWebResponse.GetResponseStream();
    •                
    •             }
    •             catch (Exception)
    •             {
    •                 success = false;
    •             }
    •             finally
    •             {
    •                 if (ftpResponseStream != null)
    •                 {
    •                     ftpResponseStream.Close();
    •                 }
    •                 if (ftpWebResponse != null)
    •                 {
    •                     ftpWebResponse.Close();
    •                 }
    •             }
    •             return success;
    •         }
    •         /// <summary>
    •         /// 消除文件
    •         /// </summary>
    •         /// <param name="filePath"></param>
    •         public bool fileDelete(string ftpPath, string ftpName)
    •         {
    •             bool success = false;
    •             FtpWebRequest ftpWebRequest = null;
    •             FtpWebResponse ftpWebResponse = null;
    •             Stream ftpResponseStream = null;
    •             StreamReader streamReader = null;
    •             try
    •             {
    •                 string uri = ftpRootURL + ftpPath + ftpName;
    •                 ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
    •                 ftpWebRequest.Credentials = new NetworkCredential(ftpUser, ftpPassword);
    •                 ftpWebRequest.KeepAlive = false;
    •                 ftpWebRequest.Method = WebRequestMethods.Ftp.DeleteFile;
    •                 ftpWebResponse = (FtpWebResponse)ftpWebRequest.GetResponse();
    •                 long size = ftpWebResponse.ContentLength;
    •                 ftpResponseStream = ftpWebResponse.GetResponseStream();
    •                 streamReader = new StreamReader(ftpResponseStream);
    •                 string result = String.Empty;
    •                 result = streamReader.ReadToEnd();
    •                
    •                 success = true;
    •             }
    •             catch (Exception)
    •             {
    •                 success = false;
    •             }
    •             finally
    •             {
    •                 if (streamReader != null)
    •                 {
    •                     streamReader.Close();
    •                 }
    •                 if (ftpResponseStream != null)
    •                 {
    •                     ftpResponseStream.Close();
    •                 }
    •                 if (ftpWebResponse != null)
    •                 {
    •                     ftpWebResponse.Close();
    •                 }
    •             }
    •             return success;
    •         }
    •         /// <summary>
    •         /// 文件存在检查
    •         /// </summary>
    •         /// <param name="ftpPath"></param>
    •         /// <param name="ftpName"></param>
    •         /// <returns></returns>
    •         public bool fileCheckExist(string ftpPath, string ftpName)
    •         {
    •             bool success = false;
    •             FtpWebRequest ftpWebRequest = null;
    •             WebResponse webResponse = null;            
    •             StreamReader reader = null;
    •             try
    •             {
    •                 string url = ftpRootURL + ftpPath;                
    •                 
    •                 ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(url));
    •                 ftpWebRequest.Credentials = new NetworkCredential(ftpUser, ftpPassword);
    •                 ftpWebRequest.Method = WebRequestMethods.Ftp.ListDirectory;
    •                 ftpWebRequest.KeepAlive = false;
    •                 webResponse = ftpWebRequest.GetResponse();
    •                 reader = new StreamReader(webResponse.GetResponseStream());
    •                 string line = reader.ReadLine();
    •                 while (line != null)
    •                 {
    •                     if (line == ftpName)
    •                     {
    •                         success = true;
    •                         break;
    •                     }
    •                     line = reader.ReadLine();
    •                 }
    •             }
    •             catch (Exception)
    •             {
    •                 success = false;
    •             }
    •             finally
    •             {
    •                 if (reader != null)
    •                 {
    •                     reader.Close();
    •                 }
    •                 if (webResponse != null)
    •                 {
    •                     webResponse.Close();
    •                 }
    •             }
    •             return success;
    •         }
    •     }
    • }

     

  • 相关阅读:
    密码验证合格程序(Python)
    Python找到所有子集
    Semi-Supervised Classification with Graph Convolutional Networks 阅读笔记
    2018 ICPC南京网络赛 L Magical Girl Haze 题解
    2018 CCPC网络赛 hdu6444 Neko's loop
    2018 CCPC 网络赛 Buy and Resell
    实对称矩阵可对角化证明
    矩阵的极分解证明
    关于欧几里得空间上的仿射变换的直观几何理解
    Codeforces Hello 2018 E题Logical Expression dp+最短路 好题
  • 原文地址:https://www.cnblogs.com/qq260250932/p/4965999.html
Copyright © 2011-2022 走看看