C# Ftp方式下载文件(无用户认证方式,支持断点续传)
类代码:
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; ; byte[] btArray = new byte[bufferSize]; , btArray.Length); ) { downloadedByte += contentSize; / totalByte); System.Console.WriteLine("percent=" + percent + "%"); writeStream.Write(btArray, , contentSize); contentSize = readStream.Read(btArray, , 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
C# Ftp方式下载文件(无用户认证方式,支持断点续传)的更多相关文章
- C#- FTP递归下载文件
c# ftp递归下载文件,找来找去这个最好.(打断点,一小处foreach要改成for) /// <summary> /// ftp文件上传.下载操作类 /// </summary& ...
- 通过cmd命令到ftp上下载文件
通过cmd命令到ftp上下载文件 点击"开始"菜单.然后输入"cmd"点"enter"键,出现cmd命令执行框 2 输入"ftp& ...
- Python之FTP多线程下载文件之分块多线程文件合并
Python之FTP多线程下载文件之分块多线程文件合并 欢迎大家阅读Python之FTP多线程下载系列之二:Python之FTP多线程下载文件之分块多线程文件合并,本系列的第一篇:Python之FTP ...
- Python之FTP多线程下载文件之多线程分块下载文件
Python之FTP多线程下载文件之多线程分块下载文件 Python中的ftplib模块用于对FTP的相关操作,常见的如下载,上传等.使用python从FTP下载较大的文件时,往往比较耗时,如何提高从 ...
- 【FTP】C# System.Net.FtpClient库连接ftp服务器(下载文件)
如果自己单枪匹马写一个连接ftp服务器代码那是相当恐怖的(socket通信),有一个评价较高的dll库可以供我们使用. 那就是System.Net.FtpClient,链接地址:https://net ...
- (4)FTP服务器下载文件
上一篇中,我们提到了怎么从FTP服务器下载文件.现在来具体讲述一下. 首先是路径配置.. 所以此处我们需要一个app.config来设置路径. <?xml version="1.0&q ...
- linux FTP 批量下载文件
wget是一个从网络上自动下载文件的自由工具,支持通过HTTP.HTTPS.FTP三个最常见的TCP/IP协议下载,并可以使用HTTP代理.wget名称的由来是“World Wide Web”与“ge ...
- 呵呵哒,LNMP下通过fread方式下载文件时,中文名称文件找不到文件
哎,整整折腾一个下午. 本来好好的,thinkphp 自动的uniq方式保存的文件名,非要使用原文件名,真心蛋疼~~ 然后就只好写个脚本 把原来的所有文件都重新命名一下 - - 然后把数据库对应字段也 ...
- ajax方式下载文件
在web项目中需要下载文件,由于传递的参数比较多(通过参数在服务器端动态下载指定文件),所以希望使用post方式传递参数.通常,在web前端需要下载文件,都是通过指定<a>标签的href属 ...
随机推荐
- mysql-学习链接
http://www.cnblogs.com/lyhabc/p/3691555.html
- URAL 1033 Labyrinth
E - Labyrinth Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submi ...
- 九度oj 题目1465:最简真分数
题目描述: 给出n个正整数,任取两个数分别作为分子和分母组成最简真分数,编程求共有几个这样的组合. 输入: 输入有多组,每组包含n(n<=600)和n个不同的整数,整数大于1且小于等于1000. ...
- PHP允许AJAX跨域请求的两种方法
* 一. 服务端设置 header 头允许AJAX跨域 ** 代码如下: // 允许 ityangs.net 发起的跨域请求 header("Access-Control-Allow-Ori ...
- 一句话学Java——Java重载和重写
概念:重载是指两个不同的函数有相同的名称,可以是在本类之中的函数之间的重载,也可以是子类和父类的函数之间的函数重载. 重写:只能是子类重写父类的函数.这是多态的基础. 重写的规则: 参数:重写 ...
- 用echarts.js制作中国地图,点击对应的省市链接到指定页面
这里使用的是ECharts 2,因为用EChart 3制作的地图上的省市文字标识会有重叠,推测是引入的地图文件china.js,绘制文字的坐标方面的问题,所以,这里还是使用老版本. ECharts 2 ...
- P1260 工程规划 (差分约束)
题目链接 Solution 差分约束. 差分约束似乎精髓就两句话: 当我们把不等式整理成 \(d[a]+w<=d[b]\) 时,我们求最长路. 整理成 \(d[a]+w>=d[b]\) 时 ...
- 【bzoj2440】[中山市选2011]完全平方数 莫比乌斯反演
Description 小 X 自幼就很喜欢数.但奇怪的是,他十分讨厌完全平方数.他觉得这些数看起来很令人难受.由此,他也讨厌所有是完全平方数的正整数倍的数.然而这丝毫不影响他对其他数的热爱.这天是小 ...
- 3D标签
动态实现3D标签, 主要代码: // // XLMatrix.h // XLSphereView // // Created by 史晶晶 on 16/4/4. // Copyright © 2016 ...
- C#:使用WebRequest类请求数据
本文翻译于:https://msdn.microsoft.com/en-us/library/456dfw4f(v=vs.110).aspx 下列程序描述的步骤用于从服务器请求一个资源,例如,一个We ...