如何用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文件夹下所有的文件。应该怎么改写上面的代码呢?
求高手指点,谢谢!
[解决办法]
我前两天正好解决此问题,其实思路就是,先把文件压缩成压缩包,之后下载压缩包就行了
[解决办法]
不想打包可以循环文件夹下所有文件,不需要去一个个的发请求。
相当于发送一次请求,自动循环下载所有文件。