хранить HttpContext.Current.Request.Files в переменной сеанса - PullRequest
1 голос
/ 28 апреля 2009

Я хочу хранить файлы, загруженные пользователем, в переменную сеанса, чтобы я мог использовать ее на любой странице в моем проекте. Я получаю файлы из оператора:

httpFileCollection uploads=HttpContext.Current.Request.Files;

как я могу сохранить и извлечь это в переменной сеанса ??

Благодарю за внимание

Ответы [ 2 ]

1 голос
/ 28 апреля 2009

Так же, как вы сохраняете и извлекаете ЛЮБОЙ другой объект в состояние сеанса и из него:

//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 не может быть сохранена в состоянии сеанса, я опровергаю это, поскольку я мог это сделать в прошлом. После того, как вы извлекли объект в переменную, вы можете сохранить его по своему усмотрению.

1 голос
/ 28 апреля 2009

Этот Files объект ограничен текущим запросом; чтобы сохранить это между запросами, вам нужно что-то сделать с загруженными данными - либо SaveAs, либо путем чтения из InputStream.

IMO, хранение его в сеансе не является хорошей идеей из соображений масштабируемости - было бы более естественно, например, записывать файлы в общую чистую область на диске и сохранять пути в сеансе.

...