龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > asp.net编程 >

ASP.NET实现下载文件根据MIME类型自动保存相应类型文件(2)

时间:2009-12-21 11:47来源:未知 作者:admin 点击:
分享到:
文件下载 万事俱备,只欠东风了,让我们来完成下载方法: /// summary /// 下载文件到指定目录,并返回下载后存放的文件路径 /// /summary /// param网址/param

 

文件下载

万事俱备,只欠东风了,让我们来完成下载方法:

 

/// <summary>

/// 下载文件到指定目录,并返回下载后存放的文件路径

/// </summary>

/// <param>网址</param>

/// <param>存放目录,如果该目录中已存在与待下载文件同名的文件,那么将自动重命名</param>

/// <returns>下载文件存放的文件路径</returns>

public string 下载文件(Uri Uri, string 存放目录)

{

    var q = WebRequest.Create(Uri).GetResponse();

    var s = q.GetResponseStream();

    var b = new BinaryReader(s);

    var file = 生成下载文件存放路径(存放目录, Uri, q.ContentType);

    FileStream fs = new FileStream(file, FileMode.Create, FileAccess.Write);

    fs.Write(b.ReadBytes((int)q.ContentLength), 0, (int)q.ContentLength);

    fs.Close();

    b.Close();

    s.Close();

    return file;

}

 

代码很简单,就不多说了,我们来完成最后的测试:

 

[TestMethod]

public void 文件下载测试()

{

    var d = @"C:UsersPublicDownloads";

    //首次下载

    Assert.AreEqual(@"C:UsersPublicDownloadsfiledownload.dhtml", 下载文件(new Uri("http://www.uushare.com/filedownload?user=icesee&id=2205188"), d));

    //第二次下载,遇到同名文件,自动重命名

    Assert.AreEqual(@"C:UsersPublicDownloadsfiledownload(1).dhtml", 下载文件(new Uri("http://www.uushare.com/filedownload?user=icesee&id=2205188"), d));

    //下载一个原本是gif类型的文件

    Assert.AreEqual(@"C:UsersPublicDownloads2naqyw8.gif", 下载文件(new Uri("http://i38.tinypic.com/2naqyw8.jpg"), d));

}

 

结语

相较WebClient而言,WebRequest拥有更好的可控性,在WebClient无解的时候,就尝试让WebRequest上场吧。

 

下载

范例源代码:http://www.uushare.com/user/icesee/file/2214050

本文的XPS版本:http://www.uushare.com/user/icesee/file/2214051

 

  

转载请遵循此协议:署名 - 非商业用途 - 保持一致

并保留此链接:http://skyd.cnblogs.com/


精彩图集

赞助商链接