首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

怎么用httpwebrequest实现多个文件的下载

2013-09-28 
如何用httpwebrequest实现多个文件的下载?下面的代码用httpwebrequest实现了单个文件的下载:string savePa

如何用httpwebrequest实现多个文件的下载?
下面的代码用httpwebrequest实现了单个文件的下载:
               string savePath = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"DataBase\Image\test" + PictureName//本地保存路径
                    , downFileUrl = "http://www.myserver.com/Image/" + PictureName;//下载文件的链接地址
                WebClient wcClient = new WebClient();
                WebRequest webReq = WebRequest.Create(downFileUrl);
                WebResponse webRes = webReq.GetResponse();
                int fileLength = int.Parse(webRes.ContentLength.ToString());

                Stream srm = webRes.GetResponseStream();
                StreamReader srmReader = new StreamReader(srm);
                byte[] bufferbyte = new byte[fileLength];
                int allByte = (int)bufferbyte.Length;
                int startByte = 0;
                while (fileLength > 0)
                {
                    //Application.DoEvents();
                    int downByte = srm.Read(bufferbyte, startByte, allByte);
                    if (downByte == 0) { break; };
                    startByte += downByte;
                    allByte -= downByte;
                }

                if (!File.Exists(savePath))
                {
                    string[] dirArray = savePath.Split('\\');
                    string temp = string.Empty;
                    for (int i = 0; i < dirArray.Length - 1; i++)
                    {
                        temp += dirArray[i].Trim() + "\";
                        if (!Directory.Exists(temp))
                            Directory.CreateDirectory(temp);
                    }
                }
                FileStream fs = new FileStream(savePath, FileMode.OpenOrCreate, FileAccess.Write);
                fs.Write(bufferbyte, 0, bufferbyte.Length);
                srm.Close();
                srmReader.Close();
                fs.Close();
考虑到如果是一个个地下载文件,httpwebrequest的方法会对每个文件的下载都执行请求与响应,这样会导致文件传输的低效,不是较好的办法。因为Image文件夹下的文件数量有上万个,而每个文件又比较小,只有10多K左右,所以我想一次性下载Image文件夹下所有的文件。应该怎么改写上面的代码呢?
求高手指点,谢谢!


[解决办法]
我前两天正好解决此问题,其实思路就是,先把文件压缩成压缩包,之后下载压缩包就行了
[解决办法]
不想打包可以循环文件夹下所有文件,不需要去一个个的发请求。
相当于发送一次请求,自动循环下载所有文件。

热点排行