0

私はウェブフォームアプリケーションを持っています。大きなファイル (100MB) をアップロードできる必要がありました。httpHandler と httpModule を使用して、ファイルをチャンクに分割するつもりでした。

http://forums.asp.net/t/55127.aspxも見ました

しかし、これは非常に古い投稿であり、インターネットで httpHandler を使用した例を見てきました。

http://silverlightfileupld.codeplex.com/

httpModuleがまだhttpHandlerよりも優れているかどうかはわかりません。

httpModule はアプリケーション全体のリクエストに適用されるので、指定したページに適用したいだけです。

大きなファイルをアップロードするための httpHandlerの欠点を明確に説明できる人はいますか? flash/silverlight のない良い例を知っている場合は、ここにリンクを投稿していただけますか? どうも

編集:ソースコードの例を見たいです。

4

1 に答える 1

1

多くのフォールバックを備えた多くの機能を備えたpluploadを試してみませんか。ここでそれがどのように行われるか.

これは 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
于 2012-04-27T10:00:48.017 に答える