【发布时间】:2014-08-22 01:22:34
【问题描述】:
因此,通过我的研究,我知道您需要"rewind" a stream 才能再次阅读它,或者您需要copy a stream。
我不能倒带这个流,所以我必须复制它。我尝试在下面这样做,但是当我从任一流中读取时,我最终读取了 0 个字节
CopyTo 的文档说它“读取流”。
这个“阅读”是否在最后设置了“阅读头”,还是我只是做错了什么?
public static void ListenerCallback(IAsyncResult result)
{
HttpListener listener = (HttpListener)result.AsyncState;
HttpListenerContext context = listener.EndGetContext(result);
HttpListenerRequest request = context.Request;
HttpListenerResponse response = context.Response;
System.IO.Stream stream = new System.IO.MemoryStream();
request.InputStream.CopyTo(stream);
StreamReader reader = new StreamReader(stream);
var res = reader.ReadToEnd(); //I should be seeing output here
reader.Close();
Console.WriteLine(res);
NameValueCollection coll = HttpUtility.ParseQueryString(res);
using (var outp = File.OpenWrite("output.pptx")) //This file should have data in it
{
request.InputStream.CopyTo(outp);
}
response.StatusCode = 200;
response.ContentType = "text/html";
using (StreamWriter writer = new StreamWriter(context.Response.OutputStream, Encoding.UTF8))
writer.WriteLine("File Uploaded");
response.Close();
stream.Close();
request.InputStream.Close();
}
【问题讨论】: