ASP.NET2.0, 網頁設計

[.NET]自製強悍的檔案下載器

梅干2009/04/20
  很早之前梅干曾分享過強制下載檔案,就單純的下載檔案,感覺有些無趣,且現在很多網站,都改由點了跳新視窗,倒數完成後才可進行下載,並且在新的視窗中再夾廣告,因此梅干就研究了一下,來與各位分享一下梅干的作法,其實這東東作法很簡單,梅干先利用javascript來進行倒數,數完後再去呼叫cs中的函數,這樣子就可以達到倒數完後並強制下載檔案囉!

g.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="g.aspx.cs" Inherits="g" %>



♥梅問題【檔案下載】





g.aspx.cs

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class g : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
protected void LinkButton1_Click(object sender, EventArgs e)
{
string f = Request.QueryString["f"];
if (f != null)
{
// 下載檔案回來
System.Net.WebClient wc = new System.Net.WebClient();
byte[] a = wc.DownloadData(f);
string FileName = System.IO.Path.GetFileName(f);

// 設定強迫下載
Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", FileName));
Response.BinaryWrite(a);
}
}

}


使用方法:

只要在g.aspx?f=下載網址,就可以進行下載了,
如:http://tw.minwt.com/labs/download/g.aspx
?f=http://photo.minwt.com/img/msn/EmotionPic/01.gif

另外,範例中是直接將完整的路徑顯示出來,
若不希望讓使用知道路徑的話,可將前面固定的部分,直接寫在cs中,只帶出檔名的部分即可。
梅干也放到網路空間了,懶的作或是沒有aspx空間的朋友,可直接使用必竟只是為了防止瀏覽器直接開jpg、doc、ppt...等格式。

[範例預覽]


UAG軍規iPhone防摔殼