2008-11-12 59 views
11

我已經做了一些研究,以找到一個.NET上傳組件,我可以使用它上傳大文件,有一個進度條,並且可以恢復上傳大文件。我遇到了一些組件,如AjaxUploader,SlickUploadPowUpload等等。這些選項中的每一個都需要花費金錢,只有PowUpload才能完成可恢復的上傳,但它可以通過Java小程序完成。我願意爲那些做得好的組件付費,但是如果我能自己寫這個會是最好的。在.NET中上傳大文件

我有兩個問題:

  1. 是否有可能恢復在客戶端上的文件上傳,而無需使用閃光燈/爪哇/ Silverlight的?
  2. 有沒有人有一些代碼或鏈接到一篇文章,解釋如何編寫一個.NET HTTPHandler,將允許流式上傳和ajax進度欄?

謝謝
奧斯汀

[編輯]

我意識到我確實需要能夠爲能夠這樣做組件我的項目做可恢復的文件上傳,有什麼建議?

回答

6

1)是否可以在不使用flash/java/Silverlight的情況下恢復客戶端上的文件上傳?

不是。實際的HTTP協議本身不支持部分上傳的恢復,所以即使你使用了flash或silverlight,你仍然需要在服務器上使用其他類似FTP的東西。
過去我通過在C#中編寫自定義客戶端應用程序來解決這個問題,該應用程序將文件分解成小塊(2meg),分別傳輸這些文件,然後服務器將它們全部結合在一起。

2)有沒有人有一些代碼或鏈接到一篇文章,解釋如何編寫一個.NET HTTPHandler,它將允許流式上傳和ajax進度條?

儘管這並沒有解決'簡歷'問題,但我在客戶端使用了SWFUpload,並且它的工作非常出色。它提供了一個智能文件瀏覽器(在這裏你可以提示用戶只有jpeg文件等)並上傳進度跟蹤,所有這些都不需要修改你的服務器。

+0

你可以創建一個Silverlight客戶端來完成與你的C#應用​​程序相同的功能嗎?用戶選擇上傳後,將其分解並分別提交這些部分?所以在技術上,Silverilight有可能是對的嗎? – TJB 2009-02-23 03:11:01

+1

當然,你可以這樣做。困難的部分不是客戶端本身,它正在與服務器進行協商以找出之前已上載了多少個2兆字節塊,並且跟蹤所有這些東西 – 2009-02-23 22:14:53

+0

另一種方法(這也不能解決簡歷問題問題)是Darren Johnson的IIS上傳模塊。這將使用進度條上傳,無需使用Flash,Java或Silverlight: http://darrenjohnstone.net/2008/07/15/aspnet-file-upload-module-version-2-beta-1/ – Cocowalla 2009-10-12 08:08:35

4

使用標準HTML文件輸入控件無法恢復上載,因爲整個文件都是通過HTTP請求提交的。

我以前用過NeatUpload,它給你一個進度條。它在LGPL許可下,所以你不需要爲它付費,而且它是開源的。

0

沒有更多關於簡歷問題的補充。 我使用(並繼續使用)telerik radUpload,我對它非常滿意 (它甚至可以用於對我來說非常重要的中等信任模式)。唯一的問題,我有(並無法修復)是上傳大於2GB的文件...

0

SlickUpload是相當穩固,許多大公司使用它從the site說什麼。

0

這對您的項目來說可能太晚了,但POW Upload現在已經在其新版本中實現了自動恢復上傳。我們即將在我們的網站上實施它。