Я думаю, что наиболее подходящим решением будет сохранение загруженного файла в кеше.
Вот код
var fileKey = Guid.NewGuid();
var fileStream = new Byte[Request.Files[0].ContentLength];
Request.Files[0].InputStream.Read(fileStream, 0, Request.Files[0].ContentLength);
Cache[fileKey.ToString()] = fileStream;
GUID fileKey можно сохранить в ViewState или отправить как ответ клиенту.
Позже, когда вся форма будет сохранена, кэшированный файл может быть извлечен и сохранен в базе данных с другими данными.
Хорошая вещь об этом методе состоит в том, что, если пользователь перейдет от страницы, кэшированный файл истечет, таким образом избегая затопления ресурса
Мы можем установить время истечения, используя
Cache.Add(fileKey, fileStream, null, DateTime.UtcNow.AddMinutes(10), Cache.NoSlidingExpiration, CacheItemPriority.Default, null);
функция.