我有一个在ASP.NET中开发的网站,其中包含指向50个不同PDF文件的链接。网站也有身份验证功能。现在,当用户下载特定文件时,我需要使用用户名和文件名填充数据库。提示我如何实现这一目标。
PS:我尝试使用sessionvariable
和onclickevent
获取pdf图标,但对于> 50个pdf文件来说太乱了。
答案 0 :(得分: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;
}
}
}
答案 1 :(得分:1)
您可以创建一个用于请求所有文档的http处理程序。
例如,您将在页面上添加的链接为http://yoursite/pdf?name=MyFancyPDf
在处理程序中,您可以继续执行pdf所需的任何处理(包括日志记录),然后将其提供给用户
答案 2 :(得分:0)
我会创建一个httpHandler来获取要下载的文件,这将使您能够抽象到文件的直接链接,控制以保护特定文件,并将点击文件的用户保存到数据库中,并使您能够将文件存储在任何位置文件系统,即不使这些直接链接增加安全性)