请问在一个gridview表格中,实现点击一个文件名,然后实现下载,思路是怎么样啊

这个gridview表格主要是显示下载文件的信息,比如说文件名,大小,下载次数,创建时间等等,我是想将文件名这一列填充为每个文件的名字,然后点击就可以实现下载,每个文件名... 这个gridview表格主要是显示下载文件的信息,比如说文件名,大小,下载次数,创建时间等等,我是想将文件名这一列填充为每个文件的名字,然后点击就可以实现下载,每个文件名下面有个下划线,那是超链接的那个下划线,表中的信息是来自于数据库中的一个表,我就想将表填充到gridview中,然后点击文件名实现下载,请问思路是怎样啊 展开
 我来答
Damon_lan
2015-05-13 · TA获得超过2054个赞
知道小有建树答主
回答量:415
采纳率:0%
帮助的人:177万
展开全部

我很简易用了三种方法,看看是否对你又帮助!!


  1. 建立数据库,很简单 一个ID 一个文件名。。。


  2. UI 随便弄一个GridView。。



<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DevExpressConnectionString %>"
        SelectCommand="SELECT [ID], [FileName] FROM [T_Files]"></asp:SqlDataSource>
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
        <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:LinkButton ID="lbtnView" runat="server" Text='<%#Eval("FileName") %>' CommandArgument='<%#Eval("FileName") %>'
                        OnCommand="lbtnView_Command"></asp:LinkButton>
                </ItemTemplate>
                <ItemStyle HorizontalAlign="Center" Width="120px" />
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

3. 在Load的时候,绑定数据

 protected void Page_Load(object sender, EventArgs e)
        {
            GridView1.DataSource = SqlDataSource1;
            GridView1.DataBind();
        }

4.实现code。。

  protected void lbtnView_Command(object sender, CommandEventArgs e)
        {
            string fileName = "Files\\" + e.CommandArgument.ToString();
            string path = Request.MapPath(fileName);
            FileInfo downloadExist = new FileInfo(path);

            // 方法一
            if (downloadExist.Exists)
            {
                //Response.Clear();
                //Response.ClearHeaders();
                //Response.Buffer = false;
                //Response.ContentType = "application/octet-stream";
                //Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));//downloadFile.FullName
                //Response.AppendHeader("Content-Length", downloadExist.Length.ToString());
                //Response.WriteFile(downloadExist.FullName);
                //Response.Flush();
                //Response.End();



                //HttpContext.Current.Response.ContentType = "application/x-zip-compressed";
                //HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + Server.UrlEncode(downloadExist.FullName));
                //HttpContext.Current.Response.AddHeader("Content-Length", downloadExist.Length.ToString());
                //HttpContext.Current.Response.TransmitFile(path, 0, (long)downloadExist.Length);
                //HttpContext.Current.Response.Flush();

                // 方法三。。
                long fileSize = downloadExist.Length;
                HttpContext.Current.Response.Clear();
                HttpContext.Current.Response.ContentType = "application/octet-stream";
                HttpContext.Current.Response.AddHeader("Content-Disposition", "attachement;filename=" + Server.UrlEncode(downloadExist.FullName));
                //指定文件大小   
                HttpContext.Current.Response.AddHeader("Content-Length", fileSize.ToString());
                HttpContext.Current.Response.WriteFile(path, 0, fileSize);
                HttpContext.Current.Response.Flush();
            }

        }

5.实现截图

方法一截图:

方法二截图:

方法三截图


你看各种方法的的名字有稍微不同。。你可以自己去取舍!!


加油!!一切顺利!

匿名用户
2015-05-13
展开全部
href="文件相对路径" 例 href="~/a.zip"
追问
如果后缀名不是zip的话,比如图片格式,他会在浏览器直接打开啊
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式