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