请问在一个gridview表格中,实现点击一个文件名,然后实现下载,思路是怎么样啊
这个gridview表格主要是显示下载文件的信息,比如说文件名,大小,下载次数,创建时间等等,我是想将文件名这一列填充为每个文件的名字,然后点击就可以实现下载,每个文件名...
这个gridview表格主要是显示下载文件的信息,比如说文件名,大小,下载次数,创建时间等等,我是想将文件名这一列填充为每个文件的名字,然后点击就可以实现下载,每个文件名下面有个下划线,那是超链接的那个下划线,表中的信息是来自于数据库中的一个表,我就想将表填充到gridview中,然后点击文件名实现下载,请问思路是怎样啊
展开
2个回答
展开全部
我很简易用了三种方法,看看是否对你又帮助!!
<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的话,比如图片格式,他会在浏览器直接打开啊
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询