ASP.Net Count Download Clicks

2019-03-02 17:27发布

问题:

I thought that this was easier…

I have a asp:hyperlink control, with target=”_blank”, pointing to the file I want the user to download. My plan is to track the number of times, the users click on this link.

I thought in placing it in ajax update panel, to catch the postback and avoid full page refresh.

However, hyperlink doesn’t have a onClick method.

On the other hand I could use a linkbutton, which has a onClick built in. But It’s harder to make the file open in a new window… and I would also have to do something like:

Response.AppendHeader("Content-Disposition","attachment; filename=myImage.jpg");

But I heard that the above approach has some problems with PPT, PPTX, PPS, PPSX…

What is you'r opinion on this? How and why, would you do it?

回答1:

You might want to implement an IHttpHandler to track your downloads, as shown in this article for example.

Basically your handler's ProcessRequest() method would look something like this:

public void ProcessRequest(HttpContext context)
{
    string file = context.Request.QueryString["file"];

    // set content type and header (PDF in this example)
    context.Response.ContentType = "application/pdf";
    context.Response.AddHeader(
         "Content-Disposition", "attachment; filename=" + file);

    // assuming all downloadable files are in ~/data
    context.Response.WriteFile(Server.MapPath("~/data/" + file));
    context.Response.End();
}

Then your hyperlink to download a file would be like this:

<a href="/MyApp/MyHandler.ashx?file=someFile.pdf">...</a>


回答2:

You can add an onclick to an asp hyperlink like so:

aHyperlinkControl.Attributes.Add("onclick", "jsCallToSendCountToServer();");