Отображение изображения из WebRequest - PullRequest
3 голосов
/ 25 августа 2011

Я получаю изображение из Google Charts, набрав WebRequest через POST.

У меня проблема с отображением изображения, возвращенного Google.

Iв Fiddler можно видеть, что сделан запрос на изображение, и изображение возвращается в ответ, когда я делаю:

var response = request.GetResponse();

Однако отсюда я не могу вывести изображение из моегоконтроллер.

Вот что я сейчас делаю:

using (var dataStream = response.GetResponseStream())
            {
                if (dataStream == null) return;

                using (var reader = new StreamReader(dataStream))
                {
                    byte[] dataBytes = Encoding.UTF8.GetBytes(reader.ReadToEnd());
                    Response.ContentType = "image/png";
                    Response.BinaryWrite(dataBytes);
                }
            }

Сообщение об ошибке, отображаемое в окне моего браузера:

Изображение «[путьto image] »не может быть отображено, поскольку содержит ошибки.

1 Ответ

3 голосов
/ 25 августа 2011

Попробуйте использовать WebClient , это упростит ваш код:

public ActionResult MyChart()
{
    using (var client = new WebClient())
    {
        var data = client.DownloadData("http://......");

        // TODO: the MIME type might need adjustment
        return File(data, "image/png", "chart.png"); 
    }
}

или если вам нужно использовать запрос POST и отправить некоторые значения, используйте UploadValues ​​ method:

public ActionResult MyChart()
{
    using (var client = new WebClient())
    {
        var request = new NameValueCollection
        {
            { "foo", "foo value" },
            { "bar", "bar value" },
        };
        var data = client.UploadValues("http://......", request);

        // TODO: the MIME type might need adjustment
        return File(data, "image/png", "chart.png"); 
    }
}

и затем в представлении:

<img src="@Url.Action("MyChart", "SomeController")" alt="chart" />

или если URL-адрес является статическим и может быть получен с помощью запроса GET, вы можете напрямую включить его в свое представление (в этом случае вам не нужно действие контроллера):

<img src="http://......" alt="chart" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...