2011-01-04 7 views
1

Ich versuche, ein Bild von "C: \ temp" anzuzeigen. Hier ist der Code:ASP.NET Image-Steuerelement, das kein Bild anzeigt

string root = "C:\temp\"; 

string[] files = Directory.GetFiles(root); 

foreach (string f in files) 
{ 
    if (Path.GetFileName(f).Contains(user.WorkEmail)) 
    { 
     img1.ImageUrl = root + Path.GetFileName(f); 
    } 
} 

Wenn ein Bild nicht gefunden wird, bekomme ich ein Thumbnail mit einem roten „X“ - gut, wie erwartet.

Wenn ein Bild gefunden wird, bekomme ich ein Thumbnail, aber kein Bild wird geladen/angezeigt. Wenn ich mit der rechten Maustaste auf das Vorschaubild klicke und auf "Eigenschaften" klicke, wird der korrekte Dateiname angezeigt.

Antwort

6

Sie müssen dieses Bild Teil der Website machen, um es richtig anzuzeigen. Sie müssen eine relative URL verwenden:

img1.ImageUrl = '/App_Data/foo.jpg'; 

Die Bilddatei nicht überall gefunden werden kann, wenn es Teil der Website eine separate Anfrage an den Server gemacht wird, ist das Bild zu holen, die von IIS serviert wird. Wenn Sie Bilddateien verwenden möchten, die sich in einem Ordner außerhalb Ihres Site-Stammverzeichnisses befinden, müssen Sie write a generic handler lesen, den Bildinhalt lesen, in die Antwort mit dem richtigen Inhaltstyp streamen und dann den ImageUrl auf diesen Handler verweisen.

1

sieht aus wie Sie Zeichenfolgen der Form "C: \ temp \ myfile.jpg" erstellen, richtig?

Das ist keine gültige URL. Ihre Adresse muss entweder relativ zum Stamm Ihrer Website sein (zB /content/myfile.jpg) oder sie muss das Protokoll enthalten (zB file: // c: \ temp \ myfile.jpg für lokale Dateien oder http://mysite.com/content/myfile.jpg für den Webzugriff)

0

hatte ich dieses Problem und es gelöst ... Sie die Bild adres zB schneiden geben sollte:

www.yoursite.com/folder/image.jpg

Ihre Bildquelle sein sollte = "folder/image.jpd" Keine Notwendigkeit von Root oder Website.

Verwandte Themen