private Object[] handleMultipartFormData() { Object[] rdatas = null; int content_len = 0; MemoryStream ms = new MemoryStream(); if (this.httpHeaders.ContainsKey("Content-Length")) { content_len = Convert.ToInt32(this.httpHeaders["Content-Length"]); if (content_len > MAX_POST_SIZE) { logger.Warn(String.Format("POST Content-Length({0}) too big for this simple server", content_len)); throw new Exception( String.Format("POST Content-Length({0}) too big for this simple server", content_len)); } // read image byte[] buf = new byte[BUF_SIZE]; int to_read = content_len; while (to_read > 0) { //Tool.logDebug("start inputStream.Read"); try { int numread = this.inputStream.Read(buf, 0, Math.Min(BUF_SIZE, to_read)); if (numread == 0) { if (to_read == 0) { break; } else { logger.Warn("client disconnected during post"); throw new Exception("Client disconnected during post"); } } to_read -= numread; ms.Write(buf, 0, numread); } catch (Exception e) { logger.Warn(e); content_len = 0; break; } } ms.Seek(0, SeekOrigin.Begin); } if (content_len == 0) { logger.Warn("Content-Length is 0"); HttpResponse.writeFailure(outputStream); } else { HttpRequestHandler handler = new HttpRequestHandler(); rdatas = (Object[])handler.handle(httpHeaders, ms); if (rdatas == null || rdatas.Length == 0) { HttpResponse.writeSuccess(outputStream, "text/html"); } else { HttpResponse.writeSuccess(outputStream, rdatas, "text/html"); } } ms.Dispose(); ms.Close(); ms = null; return(rdatas); }