我想将用户上传的文件存储在会话变量中,以便我可以从我想要的任何页面中使用它。我正在从语句中检索文件:
httpFileCollection uploads=HttpContext.Current.Request.Files;
如何在会话变量中存储和检索它?
感谢adavnce
答案 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状态中,我反驳说,因为我以前能够做到这一点。将对象检索到变量后,可以根据需要保存它。