C# Ftp方式下载文件(无用户认证方式,支持断点续传)
2017-06-28 16:08
736 查看
类代码:
使用示例:
以上代码参考了 http://blog.csdn.net/jiankunking/article/details/50017009 的代码,在此向原作者表示感谢。
2017年6月28日16:07:53
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.IO; namespace ConsoleTest { class FtpDlder { public void download(String url, String localFile) { FtpWebRequest remoteFileLenReq; // 此请求是为了获取远程文件长度 FtpWebRequest remoteFileReadReq;// 此请求是为了读取文件 Stream readStream = null; // 读取流 FileStream writeStream = null; // 写本地文件流 try { writeStream = new FileStream(localFile, FileMode.Append); long startPosition=writeStream.Length;// 读出本地文件已有长度 // 下面代码目的是取远程文件长度 remoteFileLenReq = (FtpWebRequest)FtpWebRequest.Create(url); remoteFileLenReq.UseBinary = true; remoteFileLenReq.ContentOffset = 0; remoteFileLenReq.Method = WebRequestMethods.Ftp.GetFileSize; FtpWebResponse rsp = (FtpWebResponse)remoteFileLenReq.GetResponse(); long totalByte = rsp.ContentLength; rsp.Close(); if (startPosition >= totalByte) { System.Console.WriteLine("本地文件长度" + startPosition + "已经大于等于远程文件长度" + totalByte); writeStream.Close(); return; } // 初始化读取远程文件请求 remoteFileReadReq = (FtpWebRequest)FtpWebRequest.Create(url); remoteFileReadReq.UseBinary = true; remoteFileReadReq.KeepAlive = false; remoteFileReadReq.ContentOffset = startPosition; remoteFileReadReq.Method = WebRequestMethods.Ftp.DownloadFile; FtpWebResponse response = (FtpWebResponse)remoteFileReadReq.GetResponse(); readStream = response.GetResponseStream(); long downloadedByte = startPosition; int bufferSize = 512; byte[] btArray = new byte[bufferSize]; int contentSize = readStream.Read(btArray, 0, btArray.Length); while (contentSize > 0) { downloadedByte += contentSize; int percent = (int)(downloadedByte * 100 / totalByte); System.Console.WriteLine("percent=" + percent + "%"); writeStream.Write(btArray, 0, contentSize); contentSize = readStream.Read(btArray, 0, btArray.Length); } readStream.Close(); writeStream.Close(); response.Close(); return; } catch (Exception) { return; } finally { if (readStream != null) { readStream.Close(); } if (writeStream != null) { writeStream.Close(); } } } } }
使用示例:
static void Main(string[] args) { // Ftp下载测试,无用户身份测试 FtpDlder fd = new FtpDlder(); fd.download("ftp://192.168.0.109/jump.jpg", "c:\\asd\\jump.jpg"); }
以上代码参考了 http://blog.csdn.net/jiankunking/article/details/50017009 的代码,在此向原作者表示感谢。
2017年6月28日16:07:53
相关文章推荐
- ASP.NET文件下载各种方式比较:对性能的影响、对大文件的支持、对断点续传和多线程下载的支持
- 使文件下载的自定义连接支持 FlashGet 的断点续传多线程链接下载! C#/ASP.Net 实现!
- c#实现 ftp ;http;共享方式下载文件 并对比本地文件和服务器文件的更新时间 判断性下载
- c#上传下载ftp(支持断点续传)
- ASP.NET文件下载各种方式比较:对性能的影响、对大文件的支持、对断点续传和多线程下载的支持
- c#上传下载ftp(支持断点续传)
- [转]ASP.NET文件下载各种方式比较:对性能的影响、对大文件的支持、对断点续传和多线程下载的支持
- ASP.NET文件下载各种方式比较:对性能的影响、对大文件的支持、对断点续传和多线程下载的支持
- C# Http文件下载公共类(支持断点续传)
- ASP.NET文件下载各种方式比较:对性能的影响、对大文件的支持、对断点续传和多线程下载的支持
- ASP.NET文件下载各种方式比较:对性能的影响、对大文件的支持、对断点续传和多线程下载的支持
- c#上传下载ftp(支持断点续传)
- C#实现文件下载,支持断点续传
- C# Http文件下载公共类(支持断点续传)
- 使文件下载的自定义连接支持 FlashGet 的断点续传多线程链接下载! C#/ASP.Net 实现
- [转]c#上传下载ftp(支持断点续传)
- c#上传下载ftp(支持断点续传)
- c#实现 ftp http共享方式下载文件 并对比本地文件和服务器文件的更新时间 判断性下载
- c#上传下载ftp(支持断点续传)
- C#实现文件下载,支持断点续传