2011-01-15 17 views
0

私のホストされた(godaddy)medium trust asp.netアプリケーションでは、大きなファイルアップロードのサポートが必要です。
明らかに進行状況の表示に反応する必要があるため、ストリームを自分で処理することが重要です。Asp.Netの中程度の大容量ファイルのアップロード

これは完全に信頼できる状態では非常に単純で、うまく動作します。
1.ファイルアップロードをリッスンするHttpModuleを書き込みます。
2.リフレクションを使用してコンテキストからHttpWorkerRequestオブジェクトを取得します。
3.ストリームをFileStreamに書き出す

中信頼のコンテキストからHttpWorkerRequestオブジェクトを取得しようとすると、許可の例外が発生することを除いて、すべて例外なくなります。リフレクションを使用するか、System.IServiceProvider.GetService()を使用してオブジェクトを取得するか(これは明確にリフレクションを使用しています)、同じエラーが発生します。

私もSystem.Web.HttpPostedFileを使ってみました。それはプロパティInputStreamを持っています。しかし、このオブジェクトは初期化時にファイル全体をアップロードしているようですので、うまくいきません。

私は自分自身を疲れていると主張し、別の代替手段を見つけることができません。

それは、ユーザーがHttpWorkerRequestオブジェクトを持ってみましょうするために、セキュリティ上のリスクであっても、確実にフレームワークがメソッド=「POST」とにenctype =「multipart/form-データ」

ファイルのストリームを処理するための別の方法を提供します

すべてのアイデアは素晴らしいでしょう
ありがとう

答えて

0

また、context.Request.InputStreamからお試しください。

+0

私はこれを撮影しました。ストリームからRead()しようとすると、ブラウザはファイル全体をアップロードしました。だからそれはちょっと目的を破る。 – johnDisplayClass

+0

@slightlyannoyed、どうやってストリームを読んでいるのですか?ストリーム全体をバッファにロードしないでください。チャンクで読み込み、チャンクを直ちに別のストリーム(ファイルストリームなど)に書き込む必要があります。 –

+0

私はチャンクで読んでいる。特定の時間に4096バイト。 Read()メソッドを呼び出すことは、チャンクでチャンクを送る限り、その仕事をしているようです。しかし、最初のチャンクを返す前に、フレームワークは私の同意なしにブラウザからファイル全体を取得します。理にかなっている? – johnDisplayClass

関連する問題