所以,我写了一个小的网络服务器。首先,我试图只发送文本,但现在我也试图发送图片。 (或HTML的网页,其中包含图片)网络服务器发送图片通过HTTP
这是我已经试过:
if ((Path.GetExtension(filename).ToLower() == "jpg") || (Path.GetExtension(filename).ToLower() == "png") || (Path.GetExtension(filename).ToLower() == "gif"))
{
Image image = Image.FromFile(filename);
MemoryStream ms = new MemoryStream();
image.Save(ms, image.RawFormat);
responseContent = Encoding.Default.GetString(ms.ToArray());
responseheader = "HTTP/1.1 200 OK\r\n" +
"Server: MiniWebServer\r\n" +
"Content-Length: " + responseContent.Length + "\r\n" +
"Content-Language: de\r\n" +
"Connection: close\r\n\r\n";
}
finalResponse = responseheader + responseContent;
return Encoding.ASCII.GetBytes(finalResponse);
所以,我试图打开HTML文件(包含图片)的浏览器,但它不” t出现。然后,我试图在浏览器中只打开图片,但是接着出现一个错误,表示图形无法显示,因为它包含错误。
尝试在调用'ms.ToArray()'之前调用'ms.Close()'。因为文档中说ToArray在流关闭时工作。 http://msdn.microsoft.com/en-us/library/system.io.memorystream.toarray.aspx – Madushan
谢谢你的提示,但不幸的是它没有任何区别 – Lola
嗯...可能是因为最后一行用ASCII编码所有东西,你的图像现在已经损坏了? 尝试获取ASCII字节的头部,但不是'responseContent'并将两个数组合并成一个较大的数组.. – Madushan