2012-04-27 48 views
0

我有一個webform應用程序。它需要能夠上傳大文件(100MB)。我打算使用httpHandler和httpModule將文件拆分爲使用HttpHandler或HttpModule上傳大文件?

我也看了一下http://forums.asp.net/t/55127.aspx

但它是一個很老的帖子,我已經看到了使用的HttpHandler在互聯網上的一些例子。

例如http://silverlightfileupld.codeplex.com/

我不確定httpModule比httpHandler更好。

由於httpModule應用於整個應用程序的請求,我只是希望它適用於指定頁面。

有人可以解釋一下httpHandler對於大文件上傳的缺點嗎(如果有的話)? 如果你知道一個沒有flash/silverlight的好例子,你可以在這裏發佈鏈接嗎? thx

編輯:希望看到一些源代碼的例子。

+0

http://weblogs.asp.net/jgalloway/archive/2008/01/08/large-file-uploads-in-asp-net.aspx – 2012-04-27 09:58:47

+0

@KamranPervaiz thx我讀過那一個。我更喜歡查看一些源代碼示例。 – 2012-04-27 10:03:03

回答

1

爲什麼不嘗試plupload它有許多功能與許多fallback和在這裏是如何完成的。

這是HTTP處理程序代碼:

Imports System 
Imports System.IO 
Imports System.Web 


Public Class upload : Implements IHttpHandler 


    Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest 
     Dim chunk As Integer = If(context.Request("chunk") IsNot Nothing, Integer.Parse(context.Request("chunk")), 0) 
     Dim fileName As String = If(context.Request("name") IsNot Nothing, context.Request("name"), String.Empty) 

     Dim fileUpload As HttpPostedFile = context.Request.Files(0) 

     Dim uploadPath = context.Server.MapPath("~/uploads") 
     Using fs = New FileStream(Path.Combine(uploadPath, fileName), If(chunk = 0, FileMode.Create, FileMode.Append)) 
      Dim buffer = New Byte(fileUpload.InputStream.Length - 1) {} 
      fileUpload.InputStream.Read(buffer, 0, buffer.Length) 

      fs.Write(buffer, 0, buffer.Length) 
     End Using 

     context.Response.ContentType = "text/plain" 
     context.Response.Write("Success") 
    End Sub 

    Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable 
     Get 
      Return False 
     End Get 
    End Property 

End Class 
+0

無法找到塊讀取部分,似乎plupload不支持HTML4,THX無論如何。 – 2012-04-27 10:10:24

+0

它支持HTML4.from API文檔http://www.plupload.com/plupload/docs/api/index.html#class_plupload.runtimes.Html4.html – coder 2012-04-27 10:11:45

+0

出於興趣,爲什麼將緩衝區設置爲輸入流長度減1? – 2013-02-12 03:03:37