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

The*_*One 3 .net c# memorystream bytearray asp.net-mvc-3

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

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

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

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

保存到磁盘后,如何更改代码,使文件保持为3191KB?

p.s*_*w.g 5

这是因为GetBuffer将返回整个基础缓冲区,而不仅仅是返回输入流中已填充字节的部分。尝试改用该ToArray方法:

mobileAppByteArray = ms.ToArray();
Run Code Online (Sandbox Code Playgroud)