How-to: Массив байтов изображения в строку, отправка обратно через HTTP-запрос, затем обратно в byte [] image? - PullRequest
1 голос
/ 19 января 2011

У меня есть байтовый массив изображения на сервере.Использование MVC в качестве псевдо-REST-интерфейса веб-службы.

Мне нужно отправить это изображение через HTTP-запрос клиенту MVC для рендеринга.

Моя первая попытка была использовать UFT8Encodingчтобы закодировать его в строку, отправьте этот крестик, а затем декодируйте его, используя UTF8Encoding на клиенте.Однако, когда я делаю это, результат на клиенте равен нулю.Я предполагаю из-за формата строки, которую я пытаюсь отправить обратно.

Это то, что я делаю сейчас безрезультатно:

        byte[] image = GetBarcodeImage(barcode);
        if (image != null)
        {
            UTF8Encoding enc = new UTF8Encoding();
            result = enc.GetString(image);
        }

Это на клиентесторона:

        UTF8Encoding  encoding= new UTF8Encoding();
        byte[] image = encoding.GetBytes(result);
        string imageBase64 = Convert.ToBase64String(image);
        string imgsrc = string.Format("data:image/gif;base64,{0}", imageBase64);

1 Ответ

0 голосов
/ 20 января 2011

Есть ли причина, по которой вы не возвращаете его как изображение с вашего контроллера?

var image = GetByteArrayImage();
var stream = new MemoryStream(image);
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Expires = 14400;
return File(stream, "image/jpg");

Тонкий в вашем клиенте вы можете просто использовать WebRequest для загрузки файла, как и любой другой файл, и не нужноделать любую другую магию.

...