C# HttpListener, служащий JPEG и PNG в качестве растровых изображений (.bmp) - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь использовать HttpListener для обслуживания изображений, которые он отсканировал со сканера. Однако, хотя он сканирует и сохраняет изображение в формате JPEG или PNG, когда он доставляет изображение, щелкните правой кнопкой мыши, чтобы сохранить изображение, изображение становится .bmp, если я пытаюсь использовать firefox или IE, но обычно сохраняет, используя chrome.

Вот как я доставляю изображения:

else if (request.RawUrl.Contains("getimage"))
            {
                string fileName = request.QueryString.GetValues(request.QueryString.AllKeys[0])[0].ToString();
                string filePath = folderPath + "\\" + fileName;
                Console.WriteLine("Recieved request for img: " + fileName);
                if (File.Exists(filePath))
                {
                    Console.WriteLine("Successfully found image,sending");
                    if (request.QueryString.GetValues(request.QueryString.AllKeys[0])[0].ToString().Split('.')[1] == "jpg")
                    {
                        fileFormat = "jpeg";
                    }
                    else
                    {
                        fileFormat = request.QueryString.GetValues(request.QueryString.AllKeys[0])[0].ToString().Split('.')[1];
                    }
                    HttpListenerResponse response = context.Response;
                    response.ContentType = "image/" + fileFormat;
                    response.StatusCode = (int)HttpStatusCode.OK;
                    byte[] reply;
                    reply = File.ReadAllBytes(filePath);
                    using (Stream s = response.OutputStream)
                    {
                        s.Write(reply, 0, reply.Length);
                    }
                    response.Close();
                    Console.WriteLine("Successfully sent image");
                }
                else
                {
                    Console.WriteLine("ERROR: Image could not be found on server");
                    HttpListenerResponse response = context.Response;
                    string responseString = "Error: image not found on server";
                    if (request.HttpMethod == "OPTIONS")
                    {
                        response.AddHeader("Access-Control-Allow-Headers", "*");
                    }
                    response.AppendHeader("Access-Control-Allow-Origin", "*");
                    context.Response.ContentLength64 = Encoding.UTF8.GetByteCount(responseString);
                    context.Response.StatusCode = (int)HttpStatusCode.OK;
                    using (Stream stream = context.Response.OutputStream)
                    {
                        using (StreamWriter writer = new StreamWriter(stream))
                        {
                            writer.Write(responseString);
                        }
                    }
                    response.Close();
                }

...