我有一个小类,它接受来自包含文件上传的浏览器的 POST。我正在使用 StreamReader 来读取它。我读取了标题,然后当我到达正文时,我得到了内容长度并制作了一个该大小的数组,然后stream.ReadBlock()
是:
char[] buffer = new char[contentLength];
stream.ReadBlock(buffer, 0, contentLength);
String body = new string(buffer);
当我运行它并发布一个文本文件时,它工作正常。但是,我尝试了 ZIP 文件和 MP3 文件,但这些都不起作用。它只是挂断stream.ReadBlock()
电话。
我首先在带有 Mono 2.6.7 的 Ubuntu 10.04 上尝试了这个(我的 MonoDevelop 项目设置为使用 .net 3.5)。我刚刚通过在 VisualStudio 2010 和 .net 3.5 中运行相同的项目验证了在 Windows7 上发生了同样的事情。我试过从 Firefox 和 Chrome 发布。
任何人都知道为什么会发生这种情况?谢谢。
我还尝试使用 BinaryReader 而不是 StreamReader:
byte[] bytes = reader.ReadBytes(contentLength);
但无论现在如何,它最终都会挂在那个电话上。是因为我使用 StreamReader 读取 POST 的标题,然后使用 BinaryReader 读取正文吗?