Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# asp.net网站文件下载历史记录_C#_Javascript_Asp.net - Fatal编程技术网

C# asp.net网站文件下载历史记录

C# asp.net网站文件下载历史记录,c#,javascript,asp.net,C#,Javascript,Asp.net,我有一个在ASP.NET中开发的网站,其中包含指向50个不同PDF文件的链接。网站也有身份验证功能。现在,当用户下载特定文件时,我需要用用户名和文件名填充数据库。告诉我如何做到这一点。 PS:我曾尝试对pdf图标使用sessionvariable和onclickevent,但是对于>50个pdf文件来说,它太乱了。我会创建一个httpHandler来获取文件供下载,这将使您能够提取到文件的直接链接,赋予控制权以保护特定文件的安全,并将单击文件的用户保存到数据库中,使您能够在文件系统中的任何位置存

我有一个在ASP.NET中开发的网站,其中包含指向50个不同PDF文件的链接。网站也有身份验证功能。现在,当用户下载特定文件时,我需要用用户名和文件名填充数据库。告诉我如何做到这一点。
PS:我曾尝试对pdf图标使用
sessionvariable
onclickevent
,但是对于>50个pdf文件来说,它太乱了。

我会创建一个httpHandler来获取文件供下载,这将使您能够提取到文件的直接链接,赋予控制权以保护特定文件的安全,并将单击文件的用户保存到数据库中,使您能够在文件系统中的任何位置存储文件,即不进行这些直接链接以增加安全性)

您可以创建一个http处理程序,用于请求所有文档

例如,您在页面上放置的链接将是
http://yoursite/pdf?name=MyFancyPDf


在处理程序中,您可以执行pdf所需的任何处理(包括日志记录),然后将其提供给用户,您必须创建一个下载处理程序。您可以循环浏览服务器上的物理文件,或者将它们编码到某种数据库中

在该处理程序中,您需要一些方法来记录“单击”功能。
注意:这不包括已取消的下载

加价

<asp:HyperLink id="hyperlink1" ... />
处理者

<%@ WebHandler Language="C#" Class="Downloader" %>

using System;
using System.Web;

public class Downloader : IHttpHandler {

    public void ProcessRequest (HttpContext context) {

        // create a file response
        HttpResponse r = context.Response;
        r.ContentType = // set the appropriate content type;

        string file = context.Request.QueryString["file"];

        // *****
        // LOG THE REQUEST
        // *****

        // write out the file
        r.WriteFile(...);
    }

    public bool IsReusable {
        get {
            return false;
        }
    }
}

使用制度;
使用System.Web;
公共类下载程序:IHttpHandler{
公共void ProcessRequest(HttpContext上下文){
//创建一个文件响应
HttpResponse r=context.Response;
r、 ContentType=//设置适当的内容类型;
字符串文件=context.Request.QueryString[“文件”];
// *****
//记录请求
// *****
//写出文件
r、 写入文件(…);
}
公共布尔可重用{
得到{
返回false;
}
}
}

在下载点击时引发一个按钮事件,并将正在下载的文件存储在数据库中。如果引发点击事件,可能会重复@KrishnaThota,您将无法计算未点击链接下载文件的人。该死的,这只会打败我,如果不怀疑我不是人类,我会是第一个:(
<%@ WebHandler Language="C#" Class="Downloader" %>

using System;
using System.Web;

public class Downloader : IHttpHandler {

    public void ProcessRequest (HttpContext context) {

        // create a file response
        HttpResponse r = context.Response;
        r.ContentType = // set the appropriate content type;

        string file = context.Request.QueryString["file"];

        // *****
        // LOG THE REQUEST
        // *****

        // write out the file
        r.WriteFile(...);
    }

    public bool IsReusable {
        get {
            return false;
        }
    }
}