小试牛刀,文件下载.net(C#)的实现

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>
    标&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;题:<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 />
    摘&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;要:<br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<%# 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为封装的数据库操作类。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值