我正在尝试写一个接受图像的http服务器。我设法通过这种方式传输txt文件或简单文本。但是,当涉及到JPEG文件,被转移的人变得无法访问。通过http发送jpg文件
客户端:
WebRequest request = WebRequest.Create("http://localhost:8080");
request.Method = "POST";
byte[] byteArray = System.IO.File.ReadAllBytes(path);
request.ContentType = "image/jpeg";
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
服务器端:
HttpListenerContext context = listener.GetContext();
HttpListenerRequest request = context.Request;
StreamReader reader = new StreamReader(request.InputStream,request.ContentEncoding);
Console.WriteLine("Client data content type {0}", request.ContentType);
String Data = reader.ReadToEnd();
byte[] imagebuffer = System.Text.Encoding.UTF8.GetBytes(Data);
System.IO.File.WriteAllBytes(path, imagebuffer);
当我尝试这与.txt文件,字节数组的每边长不改变和服务器端文件可读。但使用jpg,数组长度是不同的。我想这是造成这个问题。我能做些什么来避免这种情况?还是有其他选择吗?
编辑:用“BinaryReader”替换“StreamReader”,现在工作正常。好像;
BinaryReader reader = new BinaryReader(request.InputStream, request.ContentEncoding);
byte[] imagebuffer = reader.ReadBytes((int)request.ContentLength64);
System.IO.File.WriteAllBytes(path, imagebuffer);
[“John Saunders编辑了你的标题,请参阅”应该在标题中包含“标签吗?”,其中的共识是“不,他们不应该”。/questions/15214204/return-different-lists-for-each-key#comment21443674_15214204) – 2013-03-05 02:47:52