2012-09-06 79 views
1

我有一個在ASP.NET中開發的網站,其中包含指向50個不同PDF文件的鏈接。網站也具有身份驗證功能。現在,當用戶下載一個特定的文件時,我需要用用戶名和文件名填充數據庫。提示我如何實現這一點。 PS:我曾嘗試使用sessionvariableonclickevent作爲pdf圖標,但對於> 50個pdf文件而言太亂了。asp.net網站文件下載歷史

+0

提高對數據庫下載點擊和存儲按鈕事件哪個文件爲b eing已下載。 –

+0

http://blog.donnfelker.com/2008/04/29/simple-download-counter-httphandler/ –

+0

可能重複的[ASP.Net Count Download Clicks](http://stackoverflow.com/questions/2496583/ asp-net-count-download-clicks) –

回答

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; 
     } 
    } 
} 
0

我會創建一個httpHandler來獲取要下載的文件,這將使您能夠將文件的直接鏈接抽象化,賦予控件以安全的特定文件,並將單擊文件的人保存到數據庫,並使您可以將文件存儲到任何位置在文件系統中,即不使這些直接鏈接增加安全性)

+0

dammnit只是打我,我會一直如果SO沒有懷疑我不是一個人:( –

+1

所有的時間,我正忙着寫出一些示例代碼:( –

1

您可以創建一個http處理程序,用於請求所有文檔。

比如你乾脆把頁面上的鏈接將http://yoursite/pdf?name=MyFancyPDf

在處理程序,那麼你可以去和做任何處理neccessary爲PDF格式(包括日誌記錄),然後爲它服務到用戶