文件下载问题

bl_song 2009-07-03 03:08:03
前台:
<asp:Repeater ID="fileList" runat="server" OnItemCommand= "Repeater1_ItemCommand" >
<ItemTemplate>
<dl class="Middle TC">
<dd class="Left" style="width: 50px">
<%#Eval("BidID") %>
</dd>
<dd class="Right" style="width: 50px">
<asp:LinkButton ID="lbtDown" runat="server" CommandName="Down" CommandArgument='<%#Eval("BidFile") %>'>点击下载</asp:LinkButton></dd>
<dd class="Right" style="width: 120px">
<%#Convert.ToDateTime(Eval("BidAddTime")).ToString("yyyy-MM-dd HH:mm:ss")%></dd>
<dd class="TL">
<%#Eval("BidTitle") %></dd>
</dl>
</ItemTemplate>
</asp:Repeater>


后台:
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
if (e.CommandName == "Down")
{
LinkButton delete = (LinkButton)e.Item.FindControl( "lbtDown");

string fileName = HttpContext.Current.Server.UrlEncode(e.CommandArgument.ToString());
string filePath = HttpContext.Current.Server.MapPath("~/"+e.CommandArgument.ToString());
FileInfo info = new FileInfo(filePath);
long fileSize = info.Length;
Response.Clear();
Response.ContentType = "application/x-zip-compressed";
Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
//不指明Content-Length用Flush的话不会显示下载进度
Response.AddHeader("Content-Length", fileSize.ToString());
Response.TransmitFile(info.FullName);
Response.Flush();
Response.Close();
}
}
}


代码就是以上,我在Repeater的ItemTemplate中有一个LinkButton,点击这个LinkButton希望能够下载绑定的文件,文件在后台要变为绝对路径;
问题是 我点击下载是,页面上的数据就消失,没有弹出下载提示框,不知道咋回事?有高手指点一下,谢谢了!
...全文
37 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
insus 2009-07-03
  • 打赏
  • 举报
回复
紫魂一号 2009-07-03
  • 打赏
  • 举报
回复
<a href="下载文件地址">下载</a>就可以弹出下载框了。。
bl_song 2009-07-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ws_hgo 的回复:]
用DataList做很简单

C# codepublicvoid ShowLoad()
{
DownLoad.Version="cn";
DownLoad.IsChecked=true;
DataTable dt= WebManager.List(DownLoad,"","[ID],[Title],[FileUrl]","&version=&ischecked=","[OrderNo]");
DLLoadListInfo.DataSource= dt.DefaultView;
DLLoadListInfo.DataBind();
}
HTML code<asp:DataListID="DLLoadListInfo" runat="server"><ItemTemplate><tablewidth="230" border="0" style="margin-left:10px;" align="center" cellpadding="0" cellspacing="0"><tr><tdvalign="top"><ahref="<%#Eval("FileUrl") %>">·<%#Eval("Title")%></a></td></tr></table></ItemTemplate></asp:DataList>
[/Quote]代码不是很懂,能结合我的例子说明一下吗?
messi_yang 2009-07-03
  • 打赏
  • 举报
回复
樓上方法可行~~
jamesfay 2009-07-03
  • 打赏
  • 举报
回复
commandbutton会postback,然后数据就没了
ws_hgo 2009-07-03
  • 打赏
  • 举报
回复
用DataList做很简单

 public void ShowLoad()
{
DownLoad.Version = "cn";
DownLoad.IsChecked = true;
DataTable dt = WebManager.List(DownLoad, "", "[ID],[Title],[FileUrl]", "&version=&ischecked=", "[OrderNo]");
DLLoadListInfo.DataSource = dt.DefaultView;
DLLoadListInfo.DataBind();
}


<asp:DataList ID="DLLoadListInfo" runat="server">
<ItemTemplate>
<table width="230" border="0" style="margin-left:10px;" align="center" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><a href="<%#Eval("FileUrl") %>">·<%#Eval("Title") %></a></td>
</tr>

</table>
</ItemTemplate>
</asp:DataList>

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧