2009-04-28 15 views
1

セッション変数にユーザーがアップロードしたファイルを保存したいので、私がproject.iで欲しいページから使用できるように、文からファイルを取得します:セッション変数にHttpContext.Current.Request.Filesを保存します

httpFileCollection uploads=HttpContext.Current.Request.Files; 

これをセッション変数に格納して取得するにはどうすればよいですか? Filesオブジェクトが現在の要求に制限されることadavnce

答えて

1

同じ方法:

//Store 
Session["UploadedFiles"] = uploads; 

//Retrieve 
if (Session["UploadedFiles"] != null) 
{ 
    //try-catch blocks omitted for brevity. Please implement yourself. 
    HttpFileCollection myUploads = (HttpFileCollection)Session["UploadedFiles"]; 

    // Do something with the HttpFileCollection (such as Save). 

    // Remove the object from Session after you have retrieved it. 
    Session.Remove("UploadedFiles"); 
} 

セッションでこのオブジェクトを格納する知恵は非常に議論の余地があると私は、しかし、それをお勧めしません。

HttpFileCollection変数をセッション状態で保存できないという競合については(私の前の質問を参照してください)、私は過去にそれを行うことができたと反論します。オブジェクトを変数に取り込んだら、必要に応じてオブジェクトを保存することができます。

+0

セッション状態で保存する - セッションプロバイダによって異なります。メモリ内のプロバイダはおそらく動作しますが、型はシリアライズ可能ではなく、アウトオブプロセスのストレージは恐ろしく失敗します。だからこれに頼ることは脆いでしょう。特に、Webファーム上で正しく動作するためには、アウトプロセスを必要とします。 –

+0

@Marc:あなたのコメントをありがとう。私はそのようなオブジェクトをセッションに格納することの結果を認識しており、私の答えでそれを言及しています。 – Cerebrus

1

おかげ。アップロードされたデータで何かをする必要があるリクエストの間にこれを維持するにはSaveAsか、InputStreamから読んでください。

IMOでは、スケーラビリティ上の理由から、セッションに格納することはお勧めできません。たとえば、ディスク上の共有スクラッチ領域にファイルを書き込み、セッションにパスを格納するのは自然です。あなたが保存してにし、セッションの状態からANY他のオブジェクトを取得

関連する問題