日期:2014-05-17  浏览次数:20448 次

直接给别人下载链接不经过网站的页面怎么知道被下载了多少次?
您好,我现在有一个自己发布的ASP.NET网站,下载的文件在网站的文件夹目录下,如果直接给别人下载链接而不经过网站的页面,怎么知道这个文件被下载了多少次?

------解决方案--------------------
你 可以写个httpHanlder
------解决方案--------------------
你可以在httpHanlder判断请求的url和你给的url是不是同一个,如果是同一个的话,代表有人下载
------解决方案--------------------
你该转换一下,不直接给具体链接

你提供的链接应该是中间处理程序,比如Handler

然后在httpHanlder里面,计数,然后将文件提供下载如下

C# code

//WriteFile实现下载
        string fileName = "ceshi.rar";//客户端保存的文件名
        string filePath = Server.MapPath("keji.rar");//路径

        FileInfo fileInfo = new FileInfo(filePath);
        Response.Clear();
        Response.ClearContent();
        Response.ClearHeaders();
        Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
        Response.AddHeader("Content-Length", fileInfo.Length.ToString());
        Response.AddHeader("Content-Transfer-Encoding", "binary");
        Response.ContentType = "application/octet-stream";
        Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
        Response.WriteFile(fileInfo.FullName);
        Response.Flush();
        Response.End();

------解决方案--------------------
httpHanlder你不会写?这是asp.net开发的基础知识啊

httpHanlder就是一个cs文件类。然后在web。config里面注册。iis中添加通配符应用程序映射
就可以截取任何类型的文件,根据你的下载的文件夹位置判断是不是访问了下载的文件。

例子
参见
http://msdn.microsoft.com/zh-cn/library/ms227439.aspx