2009-07-24 22 views
10

ASP.NETでアップロードしたファイルを受け取ったら、一般にHttpPostedFileオブジェクトを使用します。受信したデータはHttpPostedFile.InputStreamで利用可能になります。それはASP.NETフレームワークによって行うのなら、これは、私はそれを自分自身を配置する必要はありません信じているように私につながるプロパティは、しかし、ドキュメントはストリームを配置する責任者を言及されることはありません、そして、それはそうです(例えば、セッションにストリームを保存することはできますか?)。今誰がHttpPostedFile.InputStreamを処理する責任がありますか?

、私は多くのファイルを受信しない、と私は、この特定のストリームを配置していないため問題に実行いませんでしたが、清潔さのために - 誰もがここで設計契約が何であるかを知っているのですか?

答えて

7

それを扱う私の経験から、私はそれは、すぐに要求処理が完了したとしてリリースされていることを言うだろう。一例は、空中にボールを投げた場合です。私がそれを捕まえておらず、地面に当たったら...処分されます。私がそれを捕まえて何かをしたら、それを落としてそれを処分する。あなたが次のリクエストで遊ぶためにぶら下がっているわけではありません!私はNOOOOOO言うセッションに格納する問題に対処

!あなたがしばらくそれを必要とするならば、それをファイルシステムに書き込みます。必要なときにもう一度ストリームとして再構成し、それを再生します。セッションにファイルストリームを格納すると(おそらくバイト配列として)、セッション(メモリ)リソースの膨大な浪費のように聞こえます。

+0

確かに、セッション内のものを格納することは悪い考えのように聞こえます。私は単にストリームの正確な寿命を知ることが関係する例を見つけることを試みていました。 は、おそらくより良い例では、画像を処理して保存するためにバックグラウンドワーカーを開始し、前景にWebRequestクラスでcontinueingされるだろう - Web要求は、労働者の前に完了することが、あなたは、ストリームを正確に無効になったときに知っておく必要があるだろう。いずれにしても、私はあなたが正しいと思います。しかし、私はMicrosoftの優れたドキュメントを評価していましたが(これほど多くのIDisposable問題のように) –

+0

あなたはそれをバックグラウンドプロセスに渡したいとしても...これは素晴らしいことです...私はまだファイルシステムにファイルを保存し、インスタンスを渡すのではなくバックグラウンドスレッドにファイルへの参照を渡しますストリームの –

+0

InputStreamが私のコントロールを超えて閉じていることを考えれば、私は確かにそのようなことをするでしょう - しかし一般的に、ボトルネックを避けるためには、一時的なディスクアクセスを避けることをお勧めします。とにかく、情報をありがとう!このマニュアルに従って –

関連する問題