Bil*_*lla 2 .net c# asp.net c#-4.0
我正在尝试读取byte[]每个文件并将其添加到MemoryStream.下面是抛出错误的代码.我追加的是什么?
byte[] ba = null;
List<string> fileNames = new List<string>();
int startPosition = 0;
using (MemoryStream allFrameStream = new MemoryStream())
{
foreach (string jpegFileName in fileNames)
{
ba = GetFileAsPDF(jpegFileName);
allFrameStream.Write(ba, startPosition, ba.Length); //Error here
startPosition = ba.Length - 1;
}
allFrameStream.Position = 0;
ba = allFrameStream.GetBuffer();
Response.ClearContent();
Response.AppendHeader("content-length", ba.Length.ToString());
Response.ContentType = "application/pdf";
Response.BinaryWrite(ba);
Response.End();
Response.Close();
}
Run Code Online (Sandbox Code Playgroud)
错误:
偏移量和长度超出数组的范围,或者计数大于从索引到源集合末尾的元素数量
startPosition不是偏移到MemoryStream,而是ba.将其更改为
allFrameStream.Write(ba, 0, ba.Length);
Run Code Online (Sandbox Code Playgroud)
将附加所有字节数组 allFrameStream
顺便说一句:不要使用ba = allFrameStream.GetBuffer();代替使用ba = allFrameStream.ToArray();(你实际上不需要MemoryStream的内部缓冲区).