2010-11-26 5 views
0

Je suis en train de charger le contenu HTML en utilisant C# (Pour simuler la fonction php - file_get_contents) en utilisant les codes suivants:C# client Web: Impossible de charger l'image en html lorsque la charge la page 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; 
} 

Cependant, cela ne charge pas l'image dans le code HTML lors du rendu du contenu. Mais quand utiliser PHP file_get_content, il charge l'image dans le HTML lors du rendu du contenu.

Quelqu'un a une idée?

+1

Comment êtes-vous rendu le contenu, et qu'est-ce que la balise img ressemble? En outre, pourquoi utilisez-vous DownloadData et Encoding.ASCII plutôt que simplement DownloadString? –

+0

Après avoir lu la chaîne, je viens de sortir la chaîne entière dans la page Web pour voir le contenu. La balise img est . J'ai suivi http://www.devprise.com/2006/07/14/c-method-to-mimic-php-file_get_contents/. – phlai

+0

Je viens d'essayer DownloadString, semble comme il ne charge pas l'image trop contrairement aux php file_get_contents. – phlai

Répondre

0

En regardant la documentation pour file_get_contents, il ne devrait pas y avoir de différence entre l'utilisation d'un WebClient et cette fonction pour télécharger le contenu d'une page HTML. Dans les deux cas, vous obtiendrez une chaîne comme ceci:

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

Bien sûr, /image/test.png est relatif à l'URL que vous avez téléchargé la page HTML à partir. Donc, si vous téléchargez la page HTML à partir http://www.example.com/test.html et rendre les données récupérées à http://www.yourdomain.net/foo/bar/qux.html la balise d'image se référera à http://www.yourdomain.net/image/test.png plutôt que http://www.example.com/image/test.png.

Vous devez réécrire les URL par rapport à celles absolues avant de rendre la page HTML. Jetez un oeil à la Html Agility Pack pour cette tâche.

Questions connexes