为什么我的文件在上传并转换为字节数组后大小不同?

时间:2013-06-18 21:12:25

标签: c# .net asp.net-mvc-3 bytearray memorystream

我使用以下代码从HttPostedFileBase对象中获取字节数组

byte[] mobileAppByteArray = default(byte[]);
using (MemoryStream ms = new MemoryStream())
{
  httpPostedFileObject.InputStream.CopyTo(ms);
  mobileAppByteArray = ms.GetBuffer();
}

httpPostedFileObject的原始大小为3191KB,但经过上述转换并保存到磁盘后,文件大小为4096KB

据我所知,CopyTo的默认缓冲区大小为4096,但即使我将缓冲区大小更改为1024,结果也是一样:文件大小为4096KB。

如何更改我的代码,以便在保存到磁盘后我的文件保持为3191KB?

1 个答案:

答案 0 :(得分:5)

那是因为GetBuffer将返回整个底层缓冲区,而不仅仅是输入流中填充了字节的部分。请尝试使用ToArray方法:

mobileAppByteArray = ms.ToArray();