2012-06-13 6 views
2

В нашем приложении на основе некоторых входных данных будет отображаться изображение. Изображения представляют собой некоторые диаграммы. В рамках нашей автоматизации тестирования мне нужно загрузить эти диаграммы.Загрузить и сохранить изображение из источника HTML

У меня только источник изображения. Как загрузить изображение из источника и сохранить его на диск.

Я попытался использовать различные методы и смог загрузить файл. Но когда я пытаюсь открыть файл, получаю сообщение, говорящее «не действительный файл растрового изображения, или его формат в настоящее время не поддерживается».

Вот мой HTML

<div id="chart"> 
    <img id="c_12" src="Bonus/ModelChartImage?keys%5B0%5D=UKIrelandEBIT&values%5B0%5D=100&privacyModeServer=False&modelId=Bonus" alt="" usemap="#c_12ImageMap" style="height:300px;width:450px;border-width:0px;" /> 
<map name="c_12ImageMap" id="c_12ImageMap"> 

    <area shape="rect" coords="255,265,357,266" class="area-map-section" share="Core Bonus" alt="" /> 
    <area shape="rect" coords="128,43,229,265" class="area-map-section" share="Core Bonus" alt="" /> 
</map>  
</div> 
+3

Возможный дубликат: http://stackoverflow.com/questions/932390/how-do-i-save-an-image-from-an-url?rq=1 – aquinas

ответ

3

Найдено ответ. Мы должны установить контейнер cookie с веб-сайта по вашему запросу.

public static Stream DownloadImageData(CookieContainer cookies, string siteURL) 
{ 
    HttpWebRequest httpRequest = null; 
    HttpWebResponse httpResponse = null; 

    httpRequest = (HttpWebRequest)WebRequest.Create(siteURL); 

    httpRequest.CookieContainer = cookies; 
    httpRequest.AllowAutoRedirect = true; 

    try 
    { 
     httpResponse = (HttpWebResponse)httpRequest.GetResponse(); 
     if (httpResponse.StatusCode == HttpStatusCode.OK) 
     { 
      var httpContentData = httpResponse.GetResponseStream(); 

      return httpContentData; 
     } 
     return null; 
    } 
    catch (WebException we) 
    { 
     return null; 
    } 
    finally 
    { 
     if (httpResponse != null) 
     { 
      httpResponse.Close(); 
     } 
    } 
} 
3

Есть много способов, чтобы загрузить изображение с веб-сайта (класс WebClient, HttpWebRequest, HttpClient класс, кстати среди них новый HttpClient это самый простой способ).

Вот пример с классом HTTPClient:

HttpClient httpClient = new HttpClient(); 
Task<Stream> streamAsync = httpClient.GetStreamAsync("http://www.simedarby.com.au/images/SD.Corp.3D.4C.Pos.jpg"); 

Stream result = streamAsync.Result; 
using (Stream fileStream = File.Create("downloaded.jpg")) 
{ 
    result.CopyTo(fileStream); 
} 
+0

Я пытался использовать различные методы и способный загрузить файл. Но когда я пытаюсь открыть файл, получаю сообщение, говорящее «не действительный файл растрового изображения, или его формат в настоящее время не поддерживается». – Naresh

+0

Убедитесь, что вы действительно загрузили изображение. Может быть неправильное расширение или вместо изображения внутри файла HTML или из-за «ошибки» в двоичный файл была добавлена ​​небольшая строка. Поэтому сначала скачайте файл. – Regfor

+0

Веб-сайт работает с аутентификацией на основе форм. В этом случае, если я попытаюсь загрузить файл из другого приложения, как я могу сделать свой запрос в качестве аутентифицированного запроса. – Naresh

Смежные вопросы