2010-11-26 7 views
0

私は(PHPの関数をシミュレートするには - のfile_get_contents)C#を使用してHTMLコンテンツをロードしようとしていたときに、HTMLで画像を読み込むことができません、次のコードを使用して:C#のWebクライアント:負荷Webページ

protected string file_get_contents(string fileName) 
{ 
    string sContents = string.Empty; 
    if (fileName.ToLower().IndexOf("http:") > -1) 
    { // URL 
    System.Net.WebClient wc = new System.Net.WebClient(); 
    byte[] response = wc.DownloadData(fileName); 
    sContents = System.Text.Encoding.ASCII.GetString(response); 
    } else { 
    // Regular Filename 
    System.IO.StreamReader sr = new System.IO.StreamReader(fileName); 
    sContents = sr.ReadToEnd(); 
    sr.Close(); 
    } 
return sContents; 
} 

しかし、これは、コンテンツをレンダリングするときにイメージをHTMLにロードしません。しかし、PHPのfile_get_contentを使用すると、コンテンツをレンダリングするときにHTMLでイメージをロードします。

誰でも知っていますか?

+1

どのようにコンテンツをレンダリングしていますか、imgタグはどのように見えますか?また、なぜ単にDownloadStringではなく、DownloadDataとEncoding.ASCIIを使用していますか? –

+0

文字列を読み終えたら、文字列全体をWebページに出力して内容を表示するだけです。 imgタグはです。私はhttp://www.devprise.com/2006/07/14/c-method-to-mimic-php-file_get_contents/に従った。 – phlai

+0

私はDownloadStringを試しただけで、PHPのfile_get_contentsとは違って画像もロードされないようです。 – phlai

答えて

0

file_get_contentsのドキュメントを参照すると、WebClientとこの機能を使用してHTMLページのコンテンツをダウンロードする場合との違いはありません。 どちらの場合も、あなたはこのような文字列取得します:もちろん

string html = @"<!DOCTYPE html> 
<html> 
<head> 
    <title>Hello World</title> 
</head> 
<body> 
    Image: <img src=""/image/test.png""> 
</body> 
</html>"; 

を、/image/test.pngがあなたからHTMLページをダウンロードしたURLに対して相対的です。 http://www.example.com/test.htmlからHTMLページをダウンロードし、取得したデータをhttp://www.yourdomain.net/foo/bar/qux.htmlにレンダリングすると、画像タグはhttp://www.example.com/image/test.pngではなくhttp://www.yourdomain.net/image/test.pngとなります。

HTMLページを表示する前に、相対URLを絶対URLに書き直す必要があります。 このタスクのHtml Agility Packを見てください。

関連する問題