在会话变量中存储HttpContext.Current.Request.Files

时间:2009-04-28 07:13:32

标签: c# asp.net session-state

我想将用户上传的文件存储在会话变量中,以便我可以从我想要的任何页面中使用它。我正在从语句中检索文件:

httpFileCollection uploads=HttpContext.Current.Request.Files;

如何在会话变量中存储和检索它?

感谢adavnce

2 个答案:

答案 0 :(得分:1)

Files对象仅限于当前请求;要在您需要对上传的数据执行某些操作的请求之间保留此信息 - SaveAs或通过InputStream阅读。

IMO,将其存储在会话中并不是出于可伸缩性原因的好主意 - 例如,将文件写入磁盘上的共享临时区域并将路径存储在会话中会更自然。

答案 1 :(得分:1)

与在会话状态中存储和检索 ANY 其他对象的方式相同:

//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");
}

在Session中存储此对象的智慧是值得商榷的,但我不建议这样做。

至于争用(参考你之前的问题)HttpFileCollection变量不能存储在Session状态中,我反驳说,因为我以前能够做到这一点。将对象检索到变量后,可以根据需要保存它。