GridView 中下载文件

本文介绍如何在ASP.NET中使用GridView实现文件列表展示及点击下载的功能。通过LinkButton触发文件下载,并根据不同文件类型设置响应头,实现多种文件类型的正确下载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GridView 中每一行都有一个File Name 列,显示文件名称,点击后可下载.

前台GridView :

<asp:TemplateField HeaderText="File Name" SortExpression="FULLFILENAME">
                  <itemtemplate>
                    <asp:LinkButton id="lbnFileName" onclick="lbnFileName_Click" runat="server" Text='<%# Eval("FULLFILENAME") %>'></asp:LinkButton>
                    <asp:Label id="lblGUIDFILENAME" runat="server" Text='<%# Eval("GUID_FILENAME") %>' Visible="False"></asp:Label>
                    <asp:Label id="lblTYPENAME" runat="server" Text='<%# Eval("TYPENAME") %>' Visible="False"></asp:Label>
                  </itemtemplate>
</asp:TemplateField> 

后台cs:

 

ExpandedBlockStart.gif代码
protected void lbnFileName_Click(object sender, EventArgs e)
    {
        
try
        {
            GridViewRow objGridViewRow 
= (GridViewRow)((LinkButton)sender).NamingContainer;

            
string strDQAManualFolder = Server.MapPath(@"~\DOC\Manual");
            
string strFileName = ((LinkButton)objGridViewRow.FindControl("lbnFileName")).Text;
            
string strGuid = ((Label)objGridViewRow.FindControl("lblGUIDFILENAME")).Text;
            
string strFileType = ((Label)objGridViewRow.FindControl("lblTYPENAME")).Text;

            String fileName 
= HttpUtility.UrlEncode(strFileName);
            FileInfo file 
= new FileInfo(strDQAManualFolder + "\\" + strGuid + '.' + strFileType);
            
if (file.Exists == false)
            {
                
this.ClientScript.RegisterStartupScript(this.GetType(), "FileNotFound""alert('System can not find the file!');"true);
                
return;
            }
            
switch (strFileType)
            {
                
case "doc":
                    Response.Clear();
                    
//Response.HeaderEncoding = System.Text.;
                    
//欲讓使用者看到的檔案名稱
                    Response.AddHeader("Content-Disposition""filename=" + fileName);
                    
//檔案大小
                    Response.AddHeader("Content-Length", file.Length.ToString());
                    
//檔案類型
                    Response.ContentType = "application/octet-stream";
                    
//顯示檔案下載視窗
                    Response.TransmitFile(file.FullName);
                    Response.End();
                    
break;

                
case "ppt":
                
case "pps":
                    Response.Clear();
                    
//Response.HeaderEncoding = System.Text.;
                    
//欲讓使用者看到的檔案名稱
                    Response.AddHeader("Content-Disposition""filename=" + fileName);
                    
//檔案大小
                    Response.AddHeader("Content-Length", file.Length.ToString());
                    
//檔案類型
                    Response.ContentType = "application/vnd.ms-powerpoint";
                    
//顯示檔案下載視窗
                    Response.TransmitFile(file.FullName);
                    Response.End();
                    
break;

                
case "xls":
                
case "csv":
                
case "xml":
                    Response.Clear();
                    
//Response.HeaderEncoding = System.Text.;
                    
//欲讓使用者看到的檔案名稱
                    Response.AddHeader("Content-Disposition""filename=" + fileName);
                    
//檔案大小
                    Response.AddHeader("Content-Length", file.Length.ToString());
                    
//檔案類型
                    Response.ContentType = "application/vnd.ms-excel";
                    
//顯示檔案下載視窗
                    Response.TransmitFile(file.FullName);
                    Response.End();
                    
break;

                
case "pdf":
                    Response.Clear();
                    
//Response.HeaderEncoding = System.Text.;
                    
//欲讓使用者看到的檔案名稱
                    Response.AddHeader("Content-Disposition""filename=" + fileName);
                    
//檔案大小
                    Response.AddHeader("Content-Length", file.Length.ToString());
                    
//檔案類型
                    Response.ContentType = "application/pdf";
                    
//顯示檔案下載視窗
                    Response.TransmitFile(file.FullName);
                    Response.End();
                    
break;

                
case "htm":
                
case "html":
                    Response.Clear();
                    
//Response.HeaderEncoding = System.Text.;
                    
//欲讓使用者看到的檔案名稱
                    Response.AddHeader("Content-Disposition""filename=" + fileName);
                    
//檔案大小
                    Response.AddHeader("Content-Length", file.Length.ToString());
                    
//檔案類型
                    Response.ContentType = "text/html";
                    
//顯示檔案下載視窗
                    Response.TransmitFile(file.FullName);
                    Response.End();
                    
break;

                
case "gif":
                    Response.Clear();
                    
//Response.HeaderEncoding = System.Text.;
                    
//欲讓使用者看到的檔案名稱
                    Response.AddHeader("Content-Disposition""filename=" + fileName);
                    
//檔案大小
                    Response.AddHeader("Content-Length", file.Length.ToString());
                    
//檔案類型
                    Response.ContentType = "image/gif";
                    
//顯示檔案下載視窗
                    Response.TransmitFile(file.FullName);
                    Response.End();
                    
break;

                
case "jpg":
                
case "jpeg":
                    Response.Clear();
                    
//Response.HeaderEncoding = System.Text.;
                    
//欲讓使用者看到的檔案名稱
                    Response.AddHeader("Content-Disposition""filename=" + fileName);
                    
//檔案大小
                    Response.AddHeader("Content-Length", file.Length.ToString());
                    
//檔案類型
                    Response.ContentType = "image/jpeg";
                    
//顯示檔案下載視窗
                    Response.TransmitFile(file.FullName);
                    Response.End();
                    
break;

                
case "rtf":
                    Response.Clear();
                    
//Response.HeaderEncoding = System.Text.;
                    
//欲讓使用者看到的檔案名稱
                    Response.AddHeader("Content-Disposition""filename=" + fileName);
                    
//檔案大小
                    Response.AddHeader("Content-Length", file.Length.ToString());
                    
//檔案類型
                    Response.ContentType = "application/rtf";
                    
//顯示檔案下載視窗
                    Response.TransmitFile(file.FullName);
                    Response.End();
                    
break;

                
case "asp":
                    Response.Clear();
                    
//Response.HeaderEncoding = System.Text.;
                    
//欲讓使用者看到的檔案名稱
                    Response.AddHeader("Content-Disposition""filename=" + fileName);
                    
//檔案大小
                    Response.AddHeader("Content-Length", file.Length.ToString());
                    
//檔案類型
                    Response.ContentType = "text/asp";
                    
//顯示檔案下載視窗
                    Response.TransmitFile(file.FullName);
                    Response.End();
                    
break;

                
default:

                    Response.Clear();
                    
//Response.HeaderEncoding = System.Text.;
                    
//欲讓使用者看到的檔案名稱
                    Response.AddHeader("Content-Disposition""filename=" + fileName);

                    
//檔案大小
                    Response.AddHeader("Content-Length", file.Length.ToString());
                    
//檔案類型
                    Response.ContentType = "application/octet-stream";
                    
//顯示檔案下載視窗
                    Response.TransmitFile(file.FullName);
                    Response.End();
                    
break;
            }

        }
        
catch (Exception ex)
        {
            
this.ShowMessage("Download function exception!");
            Response.Write(ex.ToString());
        }

    }

 

 

转载于:https://www.cnblogs.com/andycai/archive/2009/12/15/1624749.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值