Я пытаюсь использовать 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();
}