有个List<string>的集合,里面每个元素记录着一个下载地址。
需求是这样的:在mvc的一个方法中对List<string>集合里的每个元素进行读取并且一次性下载完List<string>里的每个地址。
问题是这样的:如果我循环集合进行下载就会报“收到了来自服务器的重复标头来自服务器的响应包含重复报头的问题”Content-disposition的错误。
我知道用循环是不能解决问题的,请问怎么解决实现我的需要。谢谢!
你的意思是:
在一个请求里,下载list里的所有文件数据?
是的
@高山兀鹫: 自然不能写多个同名头。
如果你这样的需求,只能输出一个文件。
如果你要输出多个文件,则需要自己编写客户端代码,或者分开单独请求。
@高山兀鹫: 或者,比如输出为zip压缩,将所有的文件打包到一个zip中,然后输出的文件名为zip的文件名。
@519740105: 请问这个应该怎么实现啊
@高山兀鹫: 现成的ZIP模块,比如sharplib里就有一个zip,实现多文件压缩成一个zip。
构造webclient进行下载,每次循环,请求头header参数(如文件名等)不同。
这个得怎么设置啊
应该循环创建请求,而不是一个请求搞定。除非服务端提供批量下载的api。
请问这个循环创建请求应该是怎么做?
@高山兀鹫: 在循环体内实例化HttpClient这样的东东~
一个请求建立一个webclient,这样算一个循环,应该就实现了
static void Main(string[] args) { List<string> list = new List<string>() { "http://bbs.unpcn.com/attachment.aspx?attachmentid=3827974", "http://b.hiphotos.baidu.com/image/pic/item/f603918fa0ec08fa587802075aee3d6d55fbda11.jpg" }; foreach (var item in list) { WebClient w = new WebClient(); Uri u = new Uri(item); w.DownloadFileAsync(u,System.Guid.NewGuid().ToString("N")+".jpg"); } }
成功下载所有图片
哥们,这个跟我的代码不行呀
这种操作,对于正规一点的网站都会把你屏蔽了,赤裸裸的数据爬取。
可以考虑一下挂代理。