Laden...

ASP.NET: Bilder aus lokalem Pfad darstellen

Erstellt von Leonie96 vor 5 Jahren Letzter Beitrag vor 5 Jahren 3.612 Views
L
Leonie96 Themenstarter:in
17 Beiträge seit 2018
vor 5 Jahren
ASP.NET: Bilder aus lokalem Pfad darstellen

Guten Morgen alle zusammen,

ich habe aktuell folgendes Problem:

Und zwar speicher ich Bilder in bestimmte Ordner ab. Bsp. C:/Ordnerxy/1.jpg

Nun möchte ich diese Bilder auch auf meiner ASP.NET Seite darstellen. Das ganze funktioniert wenn ich die Bilder im Projektverzeichnis habe.

cell1.Text = string.Format("<img src='1.JPG' + ' style='width: 150px; height: 150px; ' />");

Da ich aber wie gesagt die Bilder nicht im Projektverzeichnis speichern möchte versuche ich aktuell die Bilder aus C:/Ordnerxy/1.jpg wie folgt darzustellen:

cell1.Text = string.Format("<img src='C:/Ordnerxy/1.JPG' + ' style='width: 150px; height: 150px; ' />");

Dies funktioniert jedoch nicht. Ist das ganze grundsätzlich nicht möglich ? Sodass man Bilder nur aus dem Projektverzeichnis darstellen kann ? Oder wie wäre da ein möglicher Ansatz ?
Würde mich über Hilfe sehr freuen.

Liebe Grüße,

Leonie 😛

16.827 Beiträge seit 2008
vor 5 Jahren

Sprechen wir von ASP.NET MVC?
Dann sollten alle Bilder in einem Content Ordner liegen (üblicherweise zB wwwroot/img), dann kannst Du mit Url.Content("/wwwroot/img/1.JPG") in Views oder Controllern arbeiten.

Siehe im Zweifel dazu die Dokumentation von ASP.NET.

Ansonsten auch Basics zu HTML: Bilder von lokalen Drives siehst nur Du.

L
Leonie96 Themenstarter:in
17 Beiträge seit 2018
vor 5 Jahren

Hey,

erstmal Danke für die Antwort. 😃

Also folgendes Problem liegt vor:
Ich habe diese Ordnerstruktur: Programme - Bilder , ASP.NET
In Bilder sind meine Bilder drin, die ich anzeigen möchte. Und in ASP.NET meine Programme.
Ich möchte also nun auf ein höheres Verzeichnis zugreifen.

Dazu habe ich diesen Thread gefunden:
Wie im ASP.NET Bilder von lokalem Pfad anzeigen?

Zum Test habe ich mal das versucht um letztendlich quasi meine Ordnerstruktur hochzuklettern:

 <img src="../../UI.PNG" style="height: 113px; width: 205px"></form>

Aber das ganze funktioniert schon nicht. Es wird kein Bild angezeigt. Nur wenn ich es wieder direkt in das Projektverzeichnis packe.

Jemand vielleicht einen Tipp für mich ?

Liebe Grüße,

Leonie 😛

16.827 Beiträge seit 2008
vor 5 Jahren

Bilder müssen Teil des ASP.NET Projekts sein, sonst werden diese beim Publish nicht beachtet.
Bitte les Dir dazu die Basics bei ASP.NET Contents durch.

Statische Dateien in ASP.NET Core

Im alten ASP.NET Core muss man den wwwroot von Hand erstellen und auch im Pfad beachten bzw. gabs im Template getrennte Ordner für Bilder, JavaScript und Styles.

Bilder "hochklettern" ist ein ganz arg schlechter Weg und knallt in den aller meisten Fällen dann auf dem Produktivsystem bzw. mit einer "echten" produktiven Umgebung (Domain, Subfolders..).

1.029 Beiträge seit 2010
vor 5 Jahren

Hi,

bin mir nicht sicher - aber so wie ich das verstehe ist das Problem ein ganz anderes:

Wer eine Internetanwendung schreibt à la: localhost:80 oder diese gar selbst produktiv hostet - kann keine Bilder benutzen, die nicht vom Webserver bereitgestellt werden - es nicht nicht möglich dann ein Image á la "C:\Images\myimg.png" zu verwenden - das geht nur, wenn du lediglich ein HTML-File benutzt. (Also z.B. "C:\Programs\MyHtmUI.html")

Alles andere - muss über einen Webserver bereitgestellt werden - der Link von Abt kann dir dabei behilflich sein. (Sofern du überhaupt mit ASP.NET Core arbeitest)

LG

L
Leonie96 Themenstarter:in
17 Beiträge seit 2018
vor 5 Jahren

Ok schonmal vielen Dank.

Verstehe ich das nun richtig, dass ich mit zwei unterschiedlichen Programmen NICHT auf ein und den selben Bilderordner zugreifen kann ?

Denn die Bilder müssen auch beim publishen nicht beachtet werden ,denn ich möchte über eine dynamische seite die bilder aufrufen.
Mit stinknormalen HTML Skripten funktioniert das ja auch. 😕

var neu = location.hash.replace("#",""); 
document.getElementById("dasbild").src  = "../../"+neu ;

Also durch eine Änderung in meiner URL öffne ich auch ein anderes Bild.

Beispiel:
oeffnen.com#bilderordner12/bild1.png

Nun habe ich noch eine zweite Seite Beispiel:

schliessen.com#bilderordner12/bild1.png

Liebe Grüße

1.029 Beiträge seit 2010
vor 5 Jahren

Hi,

nein - das hast du komplett in den falschen Hals bekommen.

Es ist lediglich allgemein in einer Webanwendung nicht möglich auf lokal formulierte Dateien zuzugreifen. (Es ist für deinen Browser ein riesen Unterschied, ob im Quellcode der Seite ein Bild über "C:\Bilder\MeinBild.jpg" oder "localhost:80/img/MeinBild.jpg" angesprochen wird - selbst wenn das für dich das selbe Bild ist)

Es ist allerdings absolut möglich, dass dieser Bilderordner unter einer oder sogar mehreren URL's verfügbar gemacht wird.

Wenn du das dauerhaft für viele Programme so machen möchtest - würde ich mir an deiner Stelle wohl einen IIS-Server installieren, der Dateien in diesem Ordner z.B. generell (nur von deinem PC aus erreichbar) lokal unter localhost:DeinPort/images/<DeinDateiname> zur Verfügung stellt. (Anleitungen dafür findest du sicherlich Unmengen über Google)

Alternativ kannst du auch in jedem deiner Projekte einzeln (die ja auch einen Webserver bieten, der in der Lage ist lokale Dateien zur Verfügung zu stellen - siehe Link von Abt) einbauen, dass die Bilder über eine entsprechende URL zur Verfügung stehen.

LG

L
Leonie96 Themenstarter:in
17 Beiträge seit 2018
vor 5 Jahren

Also ich habe sogar aktuell zwei Webseiten auf einem IIS laufen.
Allerdings stehe ich echt auf dem Schlauch 😮

Ich habe nun einen Ordner Programme mit Seite1 und Seite2.
Auf der gleichen Ordnerebene wie Programme befindet sich mein Ordner: Bilder. (auf dem IIS)

Auf diesen möchte ich nun mit beiden Seiten zugreifen (vom IIS)

Folgend war ja schon ein Beispiel von mir um ein Bild zu öffnen. Dafür würde ich gerne folgendes im Browser eingeben. Seite1#Bilder/bild1.PNG oder Seite1#pfadzumbild

<img id="dasbild" width=auto height=auto>&nbsp;

 document.getElementById("dasbild").src  = "../../"+neu ;
 document.getElementById("dasbild").src =+ neu;

@Taipi88
Du hast ja schon so in etwa das Beschrieben was ich meine. Aber wie öffne ich nun mit meiner Seite ein Bild aus dem übergeordneten Ordner ? 😮

Total am verzweifeln 😄 😕

Aber echt nett das ihr mir ein wenig zur Seite steht.

Danke und liebe Grüße 😛

5.658 Beiträge seit 2006
vor 5 Jahren

Hi Leonie96,

lies dir nochmal den Beitrag von Abt und den verlinkten Artikel durch.

Wenn du ein Bild in einer Web-Anwendung anzeigen willst, dann muß das Bild Teil des Projektes bzw. vom Browser aus per HTTP erreichbar sein. Es gibt auch jede Menge Anleitungen dazu im Netz, wenn dir der Artikel von Abt zu kompliziert ist.

Generell kannst du davon ausgehen, daß du nicht der erste bist, der ein Bild in einer Web-Anwendung darstellen möchte, und es daher jede Menge Artikel und Anleitungen dazu gibt. Wenn du nicht verstehst, warum das so ist, wie es ist, dann mußt du dir erstmal die Grundlagen der Web-Entwicklung anlesen. Sonst stehst duimmer wieder vor solchen Problemen und bist "total am verzweifeln"...

Weeks of programming can save you hours of planning

16.827 Beiträge seit 2008
vor 5 Jahren

Aber wie öffne ich nun mit meiner Seite ein Bild aus dem übergeordneten Ordner

Grundlagen Webserver: keine Ressourcen aus übergeordneten Ordnern.
Darauf hat im Zweifel der "Besucher" der Webseite einfach keine Rechte.

Ressourcen müssen Teil des Webprojektes sein.
Mehrfach nun gesagt. Dass Du nun zurecht verzweifelst liegt daran, dass Du Dir die Grundlagen offensichtlich einfach auch nicht anschauen willst.

L
Leonie96 Themenstarter:in
17 Beiträge seit 2018
vor 5 Jahren

Ok verstanden.
Doch aber ich dachte das es vielleicht doch irgendeine Möglichkeit gibt 😕

Bitte jetzt nicht erschlagen 😄

Wie erstelle ich denn dann nun einen gemeinsamen untergeordneten Ordner ?

Liebe Grüße

1.029 Beiträge seit 2010
vor 5 Jahren

Hallo Leonie,

erschlagen können wir dich nicht - aber man wird hier auch nicht müde dich auf vorhandene Dokumentation hinzuweisen.

Zum Thema "Gemeinsames untergeordnetes Verzeichnis" - du hörst doch sicher selbst raus, dass das unsinnig klingt oder?

Nochmal - es gibt 2 Varianten:
a) IIS:
Du legst wie von Th69 verlinkt eine Seite an, welche ausschließlich statische Dateien (deine Bilder) bereitstellt. Zugriff in anderen Anwendungen dann eben entsprechend je nach IIS-Einstellung. (IP+Port, DNS-Name, whatever...)

b) Sofern du ASP.NET Core verwendest (was du immer noch nicht eindeutig bejaht oder verneint hast...) geht's auch durchaus durch einen doppelten Aufruf von "UseStaticFiles" (siehe hierzu https://stackoverflow.com/questions/41021715/how-can-you-use-multiple-directories-for-static-files-in-an-aspnet-core-app

Sieht dann in der Startup.cs z.B. so aus:


app.UseStaticFiles();
app.UseStaticFiles(new StaticFileOptions
{
    FileProvider = new PhysicalFileProvider(
        Path.Combine(@"C:\Bilder\"))
});

LG

T
2.222 Beiträge seit 2008
vor 5 Jahren

Ich würde in deinem Fall eher den Vorschlag von Th69 verwenden und ein Web nur für die Bilder aufsetzen.
Dann kannst du in X anderen Seiten einfach auf die Bilder von deinem Bilder Web verlinken.
Hat auch den Vorteil, dass du neue Bilder einfach in das Bilder Web hochladen und verlinken kannst.
So müsstest du bei allen Projekten, die ein neues Bild verwenden wollen, dann dieses im Code als Static File hinterlegen zusätzlich zu der HTML Anpasung mit der Verlinkung.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

L
Leonie96 Themenstarter:in
17 Beiträge seit 2018
vor 5 Jahren

Danke hat perfekt geklappt mit den bereitgestellten Links.

Vielen Dank.