2009-04-28 63 views
20

我有一個更新面板,在更新面板我已經FileUpload控件和按鈕控件,在按一下按鈕,我需要有我在的UpdatePanel FileUpload控件已經上傳的文件。我有8個選項卡在頁面上,每個選項卡包含太多的信息,其中一個選項卡是附件,當用戶點擊添加新的附件模式彈出顯示,模態包含detailview在UpdatePanel和detailsview我有FileUpload控件,當用戶打保存按鈕,DetailsView控件插入事件發射,在插入事件中,我需要,我有上傳文件。
請注意,我的頁面很重,我不想要完整的postBack。文件上傳在AJAX的UpdatePanel不完全回發


有沒有人有這個問題的解決方案?被安裝在客戶端上

提前感謝你的幫助.....

回答

36

爲了解決這個問題,請看下面的步驟。

  1. 將ajax-upload添加到您的詳細視圖。
    • iframe-based uploader like Resource#1。
    • 基於Silverlight &基於Flash的上傳。我喜歡這種技術,因爲它不需要任何服務器端腳本來顯示當前的上傳狀態。但是在HTML5中,您可以在不使用任何Web瀏覽器插件的情況下創建它。
    • 商用載像資源#2。使用隱藏的iframe進行上傳的
  2. 將文件上傳到臨時位置。

    • 系統響應臨時位置。接下來,客戶端以隱藏輸入的形式詳細保存臨時位置。
    • 使用session_id保留臨時位置。您可以將其存儲在數據庫中或Session變量取決於您的框架。
  3. 當您單擊保存按鈕,系統將文件移動到自己的真實位置

注意。系統會自動從臨時位置刪除過期文件。

資源

  1. ASP.NET File Upload with Real-Time Progress Bar
  2. ASP.NET File Upload like GMail (Commercial)

更新

近一年後,我就發現了一個很大的第三屆締約方控制這個問題。這是一個jQuery的開源插件。它的名稱是Plupload,允許您使用HTML5,Silverlight,Flash或常規形式上傳文件,並提供一些獨特的功能,例如上傳進度,圖片大小調整和分塊上傳。

You can try & test Plupload by click here.

+1

很棒的回答。我會upvote ...但我今天跑出去了!有人給這個人+1。 – jrista 2009-06-06 05:05:22

+0

他在做什麼把fileupload控制放在另一個頁面和附件窗體上,用IFRAME和設置源文件上傳的控制頁面。在AsyncPostBack文件上傳控制頁面回發並上傳附加文件....但我在這裏有不同的情景像我在我的問題中提到,我有detailsview和detailsview我有fileUpload控制和其他信息,以及用戶點擊保存按鈕我需要圖像的二進制信息在相同的頁面上,而不是其他的,這是不是在我的方案的解決方案....感謝您的回覆 – 2009-06-11 04:37:49

4

離不開協同操作的二進制文件來完成。 AJAX框架沒有安全的機制來讀取文件的內容,因此能夠將其發送到服務器。瀏覽器僅支持從文件輸入框作爲多部分表單文章。

+0

感謝您的快速回復 是否有任何技巧或解決辦法實現這一目標? – 2009-04-28 10:22:13

+0

沒有任何竅門或解決辦法,即安全點不安全的地方是有一輪工作。考慮一下如果存在這樣一個工作輪迴,惡意編碼器可以做的事情,那麼你就會意識到爲什麼這種事情會被阻止。 – AnthonyWJones 2009-04-28 10:55:51

0

你看到那些提供此功能的網站,以便回發在iframe中出現並給出了一個Ajax請求的錯覺一般使用閃光燈或iframe中。

HTH

ONESHOT

1

問題是與方式的HTML文件上傳控件的工作,無關與ASP.net,文件上傳控件工作,你需要一個完整的信息的形成數據。你只能模擬你沒有做一個完整的回發,通過做一個隱藏的iframe中的所有操作,實際上傳

0

我試過swfupload(http://swfupload.org/),但請記住,你必須跳如果您使用非IE瀏覽器的表單身份驗證,可以通過箍環。這顯然是一個閃存錯誤,並沒有在閃存10中修復。我決定不要在我們的框架中使用它,因爲這個錯誤,但它是一個很好的產品。

0

我推薦YUI的上傳器小部件。見http://developer.yahoo.com/yui/uploader/

我認爲你可以用它來實現你的目標。完成上載後,您的JavaScript將需要將文件從服務器上取回到客戶端。但頁面不會刷新 - 上傳是通過Flash和隱藏的iframe。下載以向用戶顯示文件內容將通過ajax。

如果用戶沒有「批准」上傳,那麼只需再次調用服務器的ajax來刪除文件。

相關問題