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("\n");
 29                     line = reader.ReadLine();
 30                 }
 31                 result.Remove(result.ToString().LastIndexOf('\n'), 1);
 32                 reader.Close();
 33                 response.Close();
 34                 return result.ToString().Split('\n');
 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("\n");

                    line = reader.ReadLine();

                }

                // to remove the trailing '\n'

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

                reader.Close();

                response.Close();

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

            }

            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("\n");
                    line = reader.ReadLine();
                }
                reader.Close();
                response.Close();
                return result.ToString().Split('\n');
            }
            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;
  •         }
  •     }
  • }

 

 

posted @ 2015-11-15 00:50  qq260250932  阅读(1215)  评论(0编辑  收藏  举报