Solution : I use repeater to hide the URL by using CommandArgument and CommandName attributes.
I make a repeater which looks more or less like this on the aspx:
<asp:repeater id="rpt" runat="server" onitemcommand="rpt_ItemCommand" onitemdatabound="rpt_ItemDataBound">
<itemtemplate>
<asp:linkbutton id="linkFileName" runat="server" cssclass="link3"></asp:linkbutton>
</itemtemplate>
</asp:repeater>
Then on the CS:
protected void rpt_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
ClassData classData = (classData)e.Item.DataItem;
LinkButton linkFileName = (LinkButton)e.Item.FindControl("linkFileName");
string fileName = classData.FileName;
linkFileName.Text = fileName;
linkFileName.CommandArgument = classData.FileName;
}
}
protected void rpt_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Response.Clear();
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=" + e.CommandArgument);
Response.Flush();
Response.WriteFile("D:\folder\" + e.CommandArgument);
Response.End();
}
}
0 comments:
Post a Comment