请问如何使用ASP.NET下载远程URL的文件到本地服务器?

viphaiyang 2012-04-10 04:03:29
要下载的远程地址是:http://search.patentstar.com.cn/cprs2010/Docdb/GetBns.aspx?PNo=APP201180002436
问题是这个页面其实只是个跳转页,你下载试试看,就能看到真正的下载地址,下载的是一个PDF文件
在不知道真实地址的情况下,如何才能把这个文件下载到服务器?
...全文
358 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
丁码农 2012-04-11
  • 打赏
  • 举报
回复
用HttpWebRequest HttpWebResponse就可以模拟http请求了
不过下载的东西,会保存在服务器端,而不是(浏览器)客户端哦。
孟子E章 2012-04-11
  • 打赏
  • 举报
回复
可以下载的啊
string Cookie = String.Empty;
String url = "http://search.patentstar.com.cn/cprs2010/Docdb/GetBns.aspx?PNo=APP201180002436";
String refer = url.Substring(0, url.LastIndexOf("/") + 1);
System.Net.HttpWebRequest req = System.Net.HttpWebRequest.Create(url) as System.Net.HttpWebRequest;
req.AllowAutoRedirect = false;
req.Referer = refer;
req.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13";
System.Net.HttpWebResponse res = req.GetResponse() as System.Net.HttpWebResponse;
System.Net.WebHeaderCollection headers = res.Headers;
String newUrl = "";
if ((res.StatusCode == System.Net.HttpStatusCode.Found) ||
(res.StatusCode == System.Net.HttpStatusCode.Redirect) ||
(res.StatusCode == System.Net.HttpStatusCode.Moved) ||
(res.StatusCode == System.Net.HttpStatusCode.MovedPermanently))
{
newUrl = headers["Location"];
newUrl = newUrl.Trim();
}

if (headers["Set-Cookie"] != null)
{
Cookie = headers["Set-Cookie"];
}

NameValueCollection collHeader = new NameValueCollection();
if (Cookie.Length > 0)
{
collHeader.Add("Cookie", Cookie);
}
res.Close();
req = null;

String fileName = newUrl.Substring(newUrl.LastIndexOf("/") + 1);
req = System.Net.HttpWebRequest.Create(newUrl) as System.Net.HttpWebRequest;
req.AllowAutoRedirect = true;
req.Referer = url;
req.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13";
res = req.GetResponse() as System.Net.HttpWebResponse;

System.IO.Stream stream = res.GetResponseStream();
byte[] buffer = new byte[32 * 1024];
int bytesProcessed = 0;
System.IO.FileStream fs = System.IO.File.Create(Server.MapPath(fileName));
int bytesRead;
do
{
bytesRead = stream.Read(buffer, 0, buffer.Length);
fs.Write(buffer, 0, bytesRead);
bytesProcessed += bytesRead;
}
while (bytesRead > 0);
fs.Flush();
fs.Close();
res.Close();
Response.Write("文件 " + fileName + " 已经下载完成。");



参见
http://dotnet.aspx.cc/file/HttpWebRequest-Download-Redirected-File.aspx
ycproc 2012-04-10
  • 打赏
  • 举报
回复
这个页面做的是 加载操作 并不是下载

只有通过文件路径的 完整下载才是 下载
viphaiyang 2012-04-10
  • 打赏
  • 举报
回复

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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