返回介绍

1 C

2 C++

3 Windows

4 Linux

5 数据库

6 数据结构

7 算法

8 Qt

9 AS400

10 Web

12 C

13 框架

14 协议

15 工具

17 QA

12.4 C井实现FTP下载文件

发布于 2023-10-02 20:38:16 字数 3892 浏览 0 评论 0 收藏 0

C# FTP下载文件

// FTP 下载
        private int FtpFileDownload(string savePath, string fileName, string ftpServerIP, string ftpUserID, string ftpPassword)
        {

            string ftpServerPath = "ftp://" + ftpServerIP + ":23" + fileName; //":23"指定的端口,不填默认端口为21
            string ftpUser = ftpUserID;
            string ftpPwd = ftpPassword;
            string saveFilePath = savePath;

            FileStream outputStream = null;
            FtpWebResponse response = null;
            FtpWebRequest reqFTP;

            try
            {
                outputStream = new FileStream(saveFilePath, FileMode.Create);

                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpServerPath));
                reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
                reqFTP.UseBinary = true;
                reqFTP.KeepAlive = false;
                reqFTP.Timeout = 3000;
                reqFTP.Credentials = new NetworkCredential(ftpUser, ftpPwd);
                response = (FtpWebResponse)reqFTP.GetResponse();
                Stream ftpStream = response.GetResponseStream();
                int bufferSize = 2048;
                int readCount;
                ftpFileReadSize = 0;
                byte[] buffer = new byte[bufferSize];

                readCount = ftpStream.Read(buffer, 0, bufferSize);
                while (readCount > 0)
                {
                    ftpFileReadSize += readCount;
                    outputStream.Write(buffer, 0, readCount);
                    readCount = ftpStream.Read(buffer, 0, bufferSize);
                }

                ftpStream.Close();
                outputStream.Close();
                response.Close();
            }
            catch (Exception ex)
            {
                Trace.WriteLine("FtpClient异常:" + ex.Message);
                if (outputStream != null)
                {
                    outputStream.Close();
                }
                if (response != null)
                {
                    response.Close();
                }

                return -1;
            }

            return 0;
        }

        // 获取FTP文件大小
        private long GetFtpFileSize(string fileName, string ftpServerIP, string ftpUserID, string ftpPassword)
        {
            long fileSize = 0;
            string ftpServerPath = "ftp://" + ftpServerIP + ":23" + fileName;
            string ftpUser = ftpUserID;
            string ftpPwd = ftpPassword;

            FtpWebResponse response = null;
            FtpWebRequest reqFTP;

            try
            {
                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpServerPath));
                reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
                reqFTP.UseBinary = true;
                reqFTP.KeepAlive = false;
                reqFTP.Timeout = 3000;
                reqFTP.Credentials = new NetworkCredential(ftpUser, ftpPwd);
                reqFTP.Method = WebRequestMethods.Ftp.GetFileSize;//要求返回文件大小属性
                response = (FtpWebResponse)reqFTP.GetResponse();
                fileSize = response.ContentLength;
                response.Close();
            }
            catch (Exception ex)
            {
                Trace.WriteLine("FtpClient异常:" + ex.Message);
                if (response != null)
                {
                    response.Close();
                }

                return -1;
            }

            return fileSize;
        }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文