2008-09-08 19 views
3

我有幾個解決方案,但沒有一個能夠完美工作。如何在內部Windows身份驗證Intranet上允許多個文件上載?

平臺

  1. ASP.NET/VB.NET/.NET 2.0
  2. IIS 6
  3. IE6(主要),具有一定的IE7;火狐沒有必要的,但有用的

允許第三方選項

  1. 閃存
  2. 的ActiveX(想避免)
  3. 的Java(想避免)

當前嘗試次數

Gmail風格:您可以使用JavaScript添加新的上傳元素(輸入類型='文件'),然後點擊一個按鈕一次全部上傳。這可行,但仍需要大量的點擊。 (我可以用一種無形的ActiveX控件檢測之類的文件大小,這將是有益的。)

Flash上​​傳:我發現一對夫婦使用一個1x1的Flash文件充當Flash上​​傳控件上傳者,可以通過javascript調用。 (一個這樣的控制是FancyUpload,另一個是Dojo's Multiple File Uploader,又是一個由darick_c at CodeProject)。這些讓我興奮,但我很快就遇到了兩個問題:

  1. 閃存10將打破被用來調用多個功能文件上傳對話框。解決方法是使用透明的閃光燈框,或者使用閃光燈按鈕調用對話框。這不是什麼大問題。
  2. 當Flash文件嘗試上載文件時,不會使用我們Intranet上使用的集成Windows身份驗證,這會提示用戶輸入憑據。解決方法是使用無Cookie會話,由於其他原因,這對我們的項目來說是一場噩夢。

的Java上傳:我發現了幾個基於Java的多文件上傳,但大多數似乎花錢。如果我發現一個工作得很好,我可以安排購買它。我只是不想。我也不喜歡它們中的大多數。我喜歡FancyUpload,因爲它與html/javascript交互,這樣我就可以輕鬆地按照我想要的方式進行樣式和管理。

ActiveX上傳器:我發現an ActiveX solution以及。看來,ActiveX將工作。我只會寫我自己的,而不是購買那個。我認爲這將是我的最後一招。

分辨率

我很想能夠使用像FancyUpload。如果我能以某種方式獲得憑證提示,那將是完美的。但是,從我的研究中看來,唯一真正的解決方法是無Cookie會話,這是我無法做到的。

所以,問題是:有沒有辦法解決上面提出的問題,還是有沒有一個不同的解決方案,我沒有列出來實現相同的目標?

回答

0

@davidinbcn.myopenid.co:這基本上是我如何解決這個問題。但是,爲了提供更詳細的答案,我在這裏發佈我的解決方案。

解決方案!

創建兩個Web應用程序或網站,或其他。

應用程序A是一個簡單的Web應用程序。此應用程序的目的是接收文件上傳並將其保存到適當的位置。將其設置爲允許匿名訪問。然後製作一個接受發佈文件並將它們保存到指定位置的ASPX頁面。背後(我在Intranet這樣的互聯網網站可能會通過這樣自己暴露的安全問題要特別小心,如果是這樣的話。)的代碼,這個網頁看起來是這樣的:

Dim uploads As HttpFileCollection = HttpContext.Current.Request.Files 
If uploads.Count > 0 Then 
    UploadFiles(uploads) 
Else 
    result = "error" 
    err = "File Not Uploaded" 
End If 

應用程序B是您的主要網站,將允許文件上傳。將其設置爲不允許匿名訪問的經過身份驗證的Web應用程序。然後,將FancyUpload(或類似的解決方案)放置在此網站的頁面上。配置它將其文件發佈到應用程序A的上傳ASPX頁面。

1

你也可以嘗試SWFUpload - 它會適合你的Flash上​​傳器「類別」。

+0

不錯,但我相當肯定它與其他閃存解決方案有相同的缺陷。如果沒有,請告訴我。 – EndangeredMassa 2008-09-08 21:46:50

0

在Internet Explorer中,FileReference.upload(flash上​​傳)也一起發送Cookie。

只有在其他瀏覽器中運行時,此行爲纔會中斷。

+0

我想我讀了,但IE瀏覽器在我嘗試時提示我輸入憑據。 – EndangeredMassa 2008-09-16 14:50:51

2

我不認爲有任何解決整合Windows身份驗證的工作。你可能會做的是將文件保存到一個通用的不受保護的文件夾,並在swfupload的情況下,使用處理程序來移動該文件時,完全上傳

1

我們公司使用支持此功能的ajaxuploader.com。

相關問題