ftp断点续传的问题

mhjmhj2000 2007-02-05 05:03:13
Uri uri = new Uri(baseUri, fullFilename);
request = (FtpWebRequest)WebRequest.Create(uri);
request.ContentOffset = _fileOffset; //设置开始下载文件的偏移量
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.Credentials = new NetworkCredential(username,password);

response = (FtpWebResponse)request.GetResponse();

inStream = response.GetResponseStream();
// inStream.CanSeek;
outStream = File.OpenWrite(locDownAddress + @"\" + filename);
byte[] buffer = new byte[1024];

int size = 0;
while ((size = inStream.Read(buffer, 0, 1024)) > 0)
{
outStream.Write(buffer, 0, size);
}

以上是部分代码 现在想实现断点续传,( request.ContentOffset = _fileOffset; //设置开始下载文件的偏移量)这个值如何取得,我怎么才能准确取到文件下载了多少呢?如果这个值错误的话,下来的文件也用不了 :(
...全文
417 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
panzi667 2007-10-20
  • 打赏
  • 举报
回复
学习咯
CN_Azure 2007-03-30
  • 打赏
  • 举报
回复
up!
smdy 2007-02-07
  • 打赏
  • 举报
回复
来学习了
czhenq 2007-02-07
  • 打赏
  • 举报
回复
关于分块,楼上的说清楚了.除非你有足够大的内存或者可以100%保证你的文件很小,那不分块也就算了.
czhenq 2007-02-07
  • 打赏
  • 举报
回复
都说是流了,你可以将她理解为是一个入口或者表示之类的,通过她可以获取整个文件,但是她并不带表文件
ff167 2007-02-06
  • 打赏
  • 举报
回复
偏移量要先去判断服务器上的文件的大小.

上传自然是一段段来读取,不然全部读到内存里,文件一大你的内存就会爆掉...
mhjmhj2000 2007-02-06
  • 打赏
  • 举报
回复
to 楼上
我又不要实现多线程,为什么还要分块呢?
只要可以断点续传就可以,
还有一个问题请教 得到的inStream这个流 是fullFilename全文件的流吗?系统保存在什么地方了?
czhenq 2007-02-05
  • 打赏
  • 举报
回复
1.首先要对你下载的文件进行分块
2.一块一块的下载,下载好一块保存一块
3.对为下载或者为完成的块序号进行保存
4.下载为完成的块当作为下载处理
5.全部块下载完成后组装成一个文件
mhjmhj2000 2007-02-05
  • 打赏
  • 举报
回复
谢谢 这样是不是就可以简单的实现断点续传了呢?
cangwu_lee 2007-02-05
  • 打赏
  • 举报
回复
将 while 中得到的 size 加起来,为下一次使用。

int size = 0, total=0;

while (true){
size = inStream.Read(buffer, 0, 1024);
if(size<1) break;

total+=size;

}



111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧