1

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

4

3 回答 3

2

您必须创建一个下载处理程序。您可以遍历服务器上的物理文件,或者将它们编码到某种数据库中。

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

标记

<asp:HyperLink id="hyperlink1" ... />

后面的代码

hyperlink1.NavigateUrl = "Downloader.ashx?file="+"filename";

处理程序

<%@ 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;
        }
    }
}
于 2012-09-06T05:08:10.107 回答
1

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

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

然后,您可以在处理程序中进行 pdf 所需的任何处理(包括日志记录),然后将其提供给用户

于 2012-09-06T05:07:02.303 回答
0

我将创建一个 httpHandler 来获取文件以供下载,这将使您能够抽象出文件的直接链接,从而控制保护特定文件并将谁点击文件保存到您的数据库中,并使您能够将文件存储在文件系统中的任何位置,即不建立这些直接链接以增加安全性)

于 2012-09-06T05:06:57.550 回答