1、新建一个含文件下载资源列表的前台文件。我这里是一个用户控件ascx页面文件,代码如下:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="fwjs.ascx.cs" Inherits="FilesControls_fwjs" %>
<link href="../main.css" rel="stylesheet" type="text/css" />
<table width="600px" align="center" border=0 cellpadding=0 cellspacing=0>
<tr>
<td align="center">
<asp:DataList ID="dlFiles" runat="server" DataKeyField="ID" RepeatDirection="Horizontal" RepeatColumns="1" Width="95%" CellPadding="0" CellSpacing="21">
<ItemTemplate>
标 题:<a href="download.aspx?ID=<%# DataBinder.Eval(Container.DataItem, "ID").ToString()%>">此处跳转到下载功能页
<%# DataBinder.Eval(Container.DataItem,"Title").ToString()%></a>
<br />
文件来源:<%# DataBinder.Eval(Container.DataItem,"Refer").ToString()%><br />
更新时间:<%# DataBinder.Eval(Container.DataItem,"ModifyTime").ToString()%><br />
下载次数:<%# DataBinder.Eval(Container.DataItem,"DownLoadTime").ToString() %><br />
摘 要:<br />
<%# DataBinder.Eval(Container.DataItem,"Abstract").ToString() %><br />
<hr />
</ItemTemplate>
<ItemStyle HorizontalAlign="Left"/>
<FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
<SelectedItemStyle BackColor="#C5BBAF" ForeColor="#333333" Font-Bold="True" />
<HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
</asp:DataList></td>
</tr>
<tr><td align="center">
<asp:Label ID="lblMessage" runat="server" Text=""></asp:Label></td></tr>
</table>
2、后台代码(此出主要是下载文件信息从数据库读植,并不实现下载功能):
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;
using MyDataLayer;
public partial class FilesControls_fwjs : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
DataInitial();
}
public void DataInitial()
{
DataSet ds = new DataSet();
MyDataLayer.FileInfo file = new MyDataLayer.FileInfo();
ds = file.Select_List(0);
if (ds.Tables[0].Rows.Count != 0)
{
dlFiles.DataSource = ds.Tables[0].DefaultView;
dlFiles.DataBind();
}
else
{
this.lblMessage.Text = "暂无下载文件";
}
}
}
3、下载功能页,download.aspx(前台无任何内容添加,也不需要)。后台代码实现文件下载和下载次数统计。代码如下:
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;
using MyDataLayer;
using System.IO;
public partial class download : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
downloadTimeCount();
fileDownload();
}
}
public void downloadTimeCount()// 下载次数统计
{
MyDataLayer.FileInfo file = new MyDataLayer.FileInfo();
int ID = int.Parse(Request.QueryString["ID"].ToString());
file.Update_DownloadTime(ID);
}
public void fileDownload()//开始下载
{
MyDataLayer.FileInfo file = new MyDataLayer.FileInfo();
int ID = int.Parse(Request.QueryString["ID"].ToString());
DataSet ds = new DataSet();
ds = file.Select_Detail(ID);
string fileName = ds.Tables[0].Rows[0]["FileUrl"].ToString();
string fullName = "./UploadeFiles//" + fileName;
Response.Clear();
Response.ClearHeaders();
Response.Buffer = false;
Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fullName, System.Text.Encoding.UTF8));
//Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());
Response.WriteFile(fullName);
Response.Flush();
Response.End();
}
}
4、以上的MyDataLayer.FileInfo为封装的数据库操作类。