2009-10-20 18 views
3

我想知道在用戶選擇在ASP.NET頁面上提交上載文件後會執行哪些事件(如果有)。在代碼背後上傳ASP.NET文件的生命週期是什麼?

我需要調整IIS級別的任何東西嗎?

用戶上傳文件時是否應觸發頁面生命週期事件?

我看到從Visual Studio我開發服務器上的不同的行爲在關於IIS服務器我部署到:

開發服務器上,當一個文件 被選中生命 週期事件被觸發,部署服務器 他們不..上

我需要什麼類重寫,我應該換什麼web.config設置,以調整上傳的默認行爲?

我遇到的問題是找到有關如何在文件上傳之前執行代碼的文檔,但在文件被選中之後。

P.S.這與我以前的一個問題here有關,但爲了理解整個上傳過程,以一種非常不同的方式接近,所以我認爲這是一個不同的問題。

+0

你用什麼控制獲取文件上傳界面? – 2009-10-20 01:21:51

+0

沒有特別的控制,我使用ASP。NET形式如:

2009-10-20 01:41:54

回答

2

不,它沒有任何事件進行文件上傳(也許在.NET 4)

我所做的是從上傳的對象和OnLoad事件是這樣的派生類:

public event EventHandler OnUpload; 
protected void OnLoad(...){ 
    if (this.HasFile && this.OnUpload != null) 
    this.OnUpload(this, EventArgs.Empty); 
} 

那種。

- 編輯: 哦,我重新看了你的帖子,你想知道當人們選擇了一個文件,但尚未發送到服務器? 多數民衆贊成在JavaScript。 服務器端無法知道用戶何時選擇它而不向服務器發送信息。 您可以開發一個WebService函數,當輸入的onchanged被調用時調用,但我不知道這是否是一個好主意。 你能用這個javascript嗎?

嘗試:

t1.Attributes.Add("onchange", "alert('it changed its value: ' + this.value);"); 

希望它能幫助:在後面的代碼

<asp:textbox id="t1" runat="server"/> 

+0

是的,JavaScript可以觸發服務器端的東西,但我不知道我是否可以用httpcontext捕捉某些東西,以便我可以實際上操縱正在發生的事情......檢查上傳文件的大小等等。 – 2009-10-20 01:32:06

+0

讓我感到困惑的是,Cassini,Visual Studio中的內置服務器在選擇文件時會觸發事件。這是爲什麼?如果是這樣,爲什麼它會在Cassini服務器上觸發,而不是在部署的IIS上觸發? – 2009-10-20 01:34:59

+0

Cassini是Visual Studio的專用Web服務器,它可能與IE瀏覽器甚至與瀏覽器的COM控件集成,所以它在外部視覺工作室上不是同樣的事情...您可以使用javascript檢查文件,但是最將做的是看到文件的名稱和計算機中的路徑。 YOu可以使用activeX來獲取文件大小,但它只能在IE上使用,在這裏:http://forums.digitalpoint.com/showthread.php?t=6704。對於其他瀏覽器,我認爲Flash可以幫助你。我們幫助你了嗎? – Jonathan 2009-10-20 18:01:56

1

要在上傳之前執行代碼,必須在瀏覽器中運行JavaSript代碼。見我回答關於基於類型過濾文件上傳問題:

How to filter which files can be seen on upload dialog box?

+0

嗨,是的,我發現這在一定程度上是有用的,你看我正在檢查文件大小,我不認爲這可以用JavaScript來完成..最後我想測量的大小請求,其中也包含要發送的文件的大小 – 2009-10-20 01:30:25

+0

我相信你必須查看一個Flash或Silverlight上傳器。如果有免費的上傳者通過JavaScript鉤子提供這些信息,我不會感到驚訝。不幸的是,我不知道我的頭頂有什麼。 – 2009-10-20 02:11:35

+0

是的,任何ActiveX,Flash或SilverLight應用程序都會這樣做,JavaScript將無法做到這一點我認爲雖然..(這將是很好):)謝謝 – 2009-10-20 02:36:27

相關問題