(WEB)文件下载的问题。
我的代码是这样的[呵呵其实是网上抄的]:string Url="http://forum.csdn.net/PointForum/abc.rar";
string StrFileName= HttpRuntime.AppDomainAppPath+"img/abc.rar";
long lStartPos =0;
System.IO.FileStream fs;
if (System.IO.File.Exists(StrFileName))
{
fs= System.IO.File.OpenWrite(StrFileName);
lStartPos=fs.Length;
fs.Seek(lStartPos,System.IO.SeekOrigin.Current);
}
else
{
fs = new System.IO.FileStream(StrFileName,System.IO.FileMode.Create);
lStartPos =0;
}
try
{
System.Net.HttpWebRequest request =(System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(Url);
if ( lStartPos>0)
request.AddRange((int)lStartPos);
System.IO.Stream ns= request.GetResponse().GetResponseStream();
byte[] nbytes = new byte[512];
int nReadSize=0;
nReadSize=ns.Read(nbytes,0,512);
while( nReadSize >0)
{
fs.Write(nbytes,0,nReadSize);
nReadSize=ns.Read(nbytes,0,512);
}
fs.Close();
ns.Close();
}
catch(Exception ex)
{
fs.Close();
}
上面这代码在正常情况下运行是没问题的,还支持断点续传。
但在不正常的情况下就有问题:
1、当我输入的网址,已不存在[如要下载的东西已经被删了。],应该怎么判断这中情况。
2、当我的东西下载到一半,过几天再继续下载;但碰巧那文件已经不存在了[其实跟上面的问题差不多吧],又应该怎么判断跟解决。
3、有些网站不允许同时下载几个东西的,如同个IP同时最多下载3,当要下载第4个的时候一般会跳转的到一个页面做提示,这时又应该怎么判断和处理。
谢谢大家帮忙解决下~~~ --------------------编程问答-------------------- 救命哦~~~
不要沉这么快啊。。。 --------------------编程问答-------------------- 1.输入的网址,已不存在,浏览器也会解析不到的,这个没必要判断吧,你关键是看你输入的网址后的文件是否存在就可以了
2.判断文件的存在性,截取url后的文件名
3.不容许同时下载,应该用的是多线程的方法. --------------------编程问答-------------------- 1:解析不到那我“System.IO.Stream ns= request.GetResponse().GetResponseStream();
”会返回一个什么东西?
2:截取url文件名?如“http://www.abc.cn/aa.rar”他的文件名不就是"aa.rar"这有什么作用不懂?
3:多线程是不是下载一个就用一条线程序?我现在是这样的,如果不是麻烦详细点是什么东东来的?如“flashget” 这些转门下载的软件也不能同时下载N个的,你应该有试过同时在一个网站下载N个东西,他只会有几个在动,其他的是动不了的,要等有些好了,别的才会动的。当然我不是要解决同时能下载N个我,这要知道那个出了问题就行了。
麻烦解答下先谢了。~~~ --------------------编程问答-------------------- 顶下,会的帮帮啊~~~~~ --------------------编程问答-------------------- 帮你顶下把! --------------------编程问答-------------------- mark
补充:.NET技术 , C#