Как говорит Дарин, вы можете читать из входного потока - но я бы не стал полагаться на все данные, доступные за один раз. Если вы используете .NET 4, это просто:
MemoryStream target = new MemoryStream();
model.File.InputStream.CopyTo(target);
byte[] data = target.ToArray();
Достаточно просто написать эквивалент CopyTo
в .NET 3.5, если хотите. Важной частью является то, что вы читаете из HttpPostedFileBase.InputStream
.
Для эффективных целей вы могли бы проверить, является ли возвращаемый поток уже MemoryStream
:
byte[] data;
using (Stream inputStream = model.File.InputStream)
{
MemoryStream memoryStream = inputStream as MemoryStream;
if (memoryStream == null)
{
memoryStream = new MemoryStream();
inputStream.CopyTo(memoryStream);
}
data = memoryStream.ToArray();
}