AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Das System kann den Pfad nicht finden

Das System kann den Pfad nicht finden

Ein Thema von Delbor · begonnen am 5. Jul 2016 · letzter Beitrag vom 6. Jul 2016
Antwort Antwort
Seite 2 von 4     12 34   
nahpets
(Gast)

n/a Beiträge
 
#11

AW: Das System kann den Pfad nicht finden

  Alt 5. Jul 2016, 12:29
Im Request steht nicht background=bgblue.jpg .
Sondern über die Abfrage von [Request.QueryFields.Values['background'] sollte man bgblue.jpg erhalten.

Mit Values fragt man den Wert vor einem Gleichheitszeichen in der URL ab, um den Wert hinter dem Gleichheitszeichen zu bekommen.

Also erhält man mit sFile := Format('E:\DelphiXE8 Corner\DelphiXE8VclCorner\DelborWebserverXE8\DelborDataSnapServer\Images\background\%s', [Request.QueryFields.Values['background']]); hier in sFile E:\DelphiXE8 Corner\DelphiXE8VclCorner\DelborWebserverXE8\DelborDataSnapServer\Images\background\bgblue.jpg Das sollte man mal überprüfen und ebenfalls sollte man prüfen, ob es exakt diese Datei auch gibt.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#12

AW: Das System kann den Pfad nicht finden

  Alt 5. Jul 2016, 12:45
Also, der Sachverhalt stellt sich mir wie folgt dar:

Es erfolgt ein Request vom Browser mit dieser URL
Code:
http://localhost:8080/Images/background/bgblue.jpg
Somit stellt sich folgende Denksportaufgabe:
Zitat:
Nenne alle QueryFields in diesem Request mit den dazugehörigen Werten!
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
901 Beiträge
 
Delphi 10.3 Rio
 
#13

AW: Das System kann den Pfad nicht finden

  Alt 5. Jul 2016, 12:50
Hi Sir Rufo

Das hat dann doch noch etwas gedauert - der Pfad zeigte auf einen Ordner 'Images' in der selben Ebene wie 'html'. Das hab ich nun geändert. Vorerst mit dem selben Erfolg. Dann ist mir folgendes aufgefallen:
...\background\%s', [Request.QueryFields.Values['background']]); In den eckigen Klammern müsste der Dateiname stehen...

sFile := Format('E:\DelphiXE8 Corner\DelphiXE8VclCorner\DelborWebserverXE8\DelborDataSnapServer\html\Images\Logo\%s', [Request.QueryFields.Values['Delbor_9_5.jpg']]); Das scheint Delphi egal zu sein. In sFile steht der Pfad immer noch ohne Dateiname...

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#14

AW: Das System kann den Pfad nicht finden

  Alt 5. Jul 2016, 12:52
@Delbor

Löse die Denksportaufgabe in http://www.delphipraxis.net/1341997-post12.html und du bist einen Schritt weiter
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.652 Beiträge
 
Delphi 7 Personal
 
#15

AW: Das System kann den Pfad nicht finden

  Alt 5. Jul 2016, 12:59
Damit das Debuggen etwas einfacher ist:
Delphi-Quellcode:
...
 irgendeiner:=Request.QueryFields.Values['background'];
 sFile := Format('E:\DelphiXE8 Corner\DelphiXE8VclCorner\DelborWebserverXE8\DelborDataSnapServer\Images\background\%s', [irgendeiner]);
...

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#16

AW: Das System kann den Pfad nicht finden

  Alt 5. Jul 2016, 13:02
Hi Sir Rufo

Das hat dann doch noch etwas gedauert - der Pfad zeigte auf einen Ordner 'Images' in der selben Ebene wie 'html'. Das hab ich nun geändert. Vorerst mit dem selben Erfolg. Dann ist mir folgendes aufgefallen:
...\background\%s', [Request.QueryFields.Values['background']]); In den eckigen Klammern müsste der Dateiname stehen...

sFile := Format('E:\DelphiXE8 Corner\DelphiXE8VclCorner\DelborWebserverXE8\DelborDataSnapServer\html\Images\Logo\%s', [Request.QueryFields.Values['Delbor_9_5.jpg']]); Das scheint Delphi egal zu sein. In sFile steht der Pfad immer noch ohne Dateiname...

Gruss
Delbor
Und wie sieht jetzt nun die URL zu diesem konkreten Beispiel aus?

Bitte einmal alle Informationen, sonst gibt das nie was!

Für die Nutzung von Request muss die Url in etwa so aussehen: http://localhost:8080/NameDeinerWebanwendung/Images?Image=Delbor_8.jpg Ist dem so?

Mit der Abfrage des Dateinamens bei Value, wirst Du diesen nur bekommen, wenn die URL so aussieht:
http://localhost:8080/NameDeinerWebanwendung/Images?Delbor_9_5.jpg=Delbor_8.jpg Also nochmal: Im Quelltext steh immer: Request.QueryFields.Values['Images'] Und als Ergebnis bekommt man den Wert aus der Url der hinter Image= steht.

Mit einer URL der Form http://localhost:8080/Images/background/bgblue.jpg wird das nie funktionieren, da hier keine Wertepaare für die Abfrage über Request.QueryFields.Values enthalten sind.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#17

AW: Das System kann den Pfad nicht finden

  Alt 5. Jul 2016, 13:05
@nahpets

Welchen Request würdest du erwarten, wenn du im Source if Request.PathInfo = '/Images/background/bgblue.jpgthen findest?

Damit das funktioniert müsste der Request so aussehen
Code:
http://localhost:8080/Images/background/bgblue.jpg?background=bgblue.jpg
um dann per Request.QueryFields.Values['background'] den Wert 'bgblue.jpg' zu erhalten.

Aber wer macht schon so einen doppelt gemoppelten Unfug?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo ( 5. Jul 2016 um 13:11 Uhr)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#18

AW: Das System kann den Pfad nicht finden

  Alt 5. Jul 2016, 13:22
@nahpets

Welchen Request würdest du erwarten, wenn du im Source if Request.PathInfo = '/Images/background/bgblue.jpgthen findest?

Damit das funktioniert müsste der Request so aussehen
Code:
http://localhost:8080/Images/background/bgblue.jpg?background=bgblue.jpg
um dann per Request.QueryFields.Values['background'] den Wert 'bgblue.jpg' zu erhalten.

Aber wer macht schon so einen doppelt gemoppelten Unfug?
Ich nicht!

Pathinfo ist nicht '/Images/background/bgblue.jpg', das wäre eine konkrete Abfrage für eine Datei.

Pathinfo wäre in meinem Beispiel /Images.

Alles was hinter dem Fragezeichen kommt, also die durch Gleichheitszeichen getrennten und per Ampersand aufgezählten Wertepaare, sind im Request über QueryFields (als Stringliste) abzufragen.

Die Benutzung von absoluten und relativen Pfadangaben in der URL schließen die Nutzung von Request.QueryFields aus. Entweder den einen oder den anderen Weg, aber nicht irgendsoeinen unfundierten Mischmasch.

Wenn wir aber mal von einer PathInfo if Request.PathInfo = '/Images/background/bgblue.jpg' ausgehen, so müsste, um mit Request.QueryFields arbeiten zu können, die Url in etwa so aussehen: http://localhost:8080/Images/background/bgblue.jpg?Images=Bildername.jpg' Und das wäre nach meiner Meinung absoluter Humbug.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#19

AW: Das System kann den Pfad nicht finden

  Alt 5. Jul 2016, 13:29
@nahpets

Genau das ist doch der springende Punkt.

Die aufgerufene URL ist
Code:
http://localhost:8080/Images/background/bgblue.jpg
Es gibt dort keine QueryFields die man abfragen könnte. Jede Abfrage über egal welches Feld liefert einen leeren String zurück, denn es gibt eben keine Felder die irgendeinen Inhalt haben. Also können wir diese Felder getrost beiseite legen und einfach nicht mehr drüber sprechen, weil einfach nur müßig.

Die PathInfo ist aber in diesem Fall '/Images/background/bgblue.jpg' .

Also muss man einfach nur mit dieser PathInfo zurechtkommen, denn mehr ist einfach nicht da.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#20

AW: Das System kann den Pfad nicht finden

  Alt 5. Jul 2016, 13:56
@Sir RUfo
Bei '/Images/background/bgblue.jpg' handelt es sich um eine von Dir ins Spiel gebrachte PathInfo, für die ich nicht feststellen konnte, dass sie beim konkreten Problem zur Anwendung kommt.

Im anderen Thread hatte ich beschrieben, wie eine URL aufgebaut werden muss, damit die Abfrage über Request.QueryFields funktioniert. Wenn man sich nicht daran hält, dann geht's halt nicht.

Mit der von Dir vorgeschlagenen PathInfo muss man dann aber in der Web-Applikation über If-Kaskaden wieder jede Url abfragen. Wer macht denn sowas?
Dann müsste man ja für jedes neue Bild in 'ner Webseite auch die Web-Applikation anpassen.

http://localhost:8080/Images/background/bgblue.jpg?background=bgblue.jpg Ist so natürlich Unsinn.

Ohne Nutzung von Request.QueryFields so: http://localhost:8080/Images/background/bgblue.jpg
Mit Nutzung von Request.QueryFields so: http://localhost:8080/Images?background=bgblue.jpg
Alles Andere halte ich für nicht zielführend.

Hier mal 'ne Testroutine (aus 'ner mit Delphi 7 geschriebenen ISAPI-DLL'), um sich die Inhalte des Request im Browser ansehen zu können:
Delphi-Quellcode:
procedure TWebModule1.WebModule1WebActionItem1Action(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
Var
          Page : TStringList;
begin
  Page := tStringList.Create;
  Try
    Page.Add('<html>');
    Page.Add('<head>');
    Page.Add('<title>');
    Page.Add('Testseite');
    Page.Add('</title>');
    Page.Add('</head>');
    Page.Add('<body>');
    Page.Add('<hr />');
    Page.Add('Request-Info<br /><br />');
    Page.Add('Request.Accept: ' + Request.Accept + '<br />');
    Page.Add('Request.Authorization: ' + Request.Authorization + '<br />');
    Page.Add('Request.CacheControl: ' + Request.CacheControl + '<br />');
    Page.Add('Request.Connection: ' + Request.Connection + '<br />');
    Page.Add('Request.Content: ' + Request.Content + '<br />');
    Page.Add('Request.ContentEncoding: ' + Request.ContentEncoding + '<br />');
    Page.Add('Request.ContentFields.Text: ' + Request.ContentFields.Text + '<br />');
    Page.Add('Request.ContentLength: ' + IntToStr(Request.ContentLength) + '<br />');
    Page.Add('Request.ContentType: ' + Request.ContentType + '<br />');
    Page.Add('Request.ContentVersion: ' + Request.ContentVersion + '<br />');
    Page.Add('Request.Cookie: ' + Request.Cookie + '<br />');
    Page.Add('Request.CookieFields.Text: ' + Request.CookieFields.Text + '<br />');
    Page.Add('Request.Date: ' + DateToStr(Request.Date) + '<br />');
    Page.Add('Request.DerivedFrom: ' + Request.DerivedFrom + '<br />');
    Page.Add('Request.Expires: ' + DateToStr(Request.Expires) + '<br />');
    Page.Add('Request.From: ' + Request.From + '<br />');
    Page.Add('Request.Host: ' + Request.Host + '<br />');
    Page.Add('Request.IfModifiedSince: ' + DateToStr(Request.IfModifiedSince) + '<br />');
    Page.Add('Request.InternalPathInfo: ' + Request.InternalPathInfo + '<br />');
    Page.Add('Request.InternalScriptName: ' + Request.InternalScriptName + '<br />');
    Page.Add('Request.Method: ' + Request.Method + '<br />');
    Page.Add('Request.PathInfo: ' + Request.PathInfo + '<br />');
    Page.Add('Request.PathTranslated: ' + Request.PathTranslated + '<br />');
    Page.Add('Request.ProtocolVersion: ' + Request.ProtocolVersion + '<br />');
    Page.Add('Request.Query: ' + Request.Query + '<br />');
    Page.Add('Request.QueryFields.Text: ' + Request.QueryFields.Text + '<br />');
    Page.Add('Request.Referer: ' + Request.Referer + '<br />');
    Page.Add('Request.RemoteAddr:' + Request.RemoteAddr + '<br />');
    Page.Add('Request.RemoteHost: ' + Request.RemoteHost + '<br />');
    Page.Add('Request.ScriptName: ' + Request.ScriptName + '<br />');
    Page.Add('Request.ServerPort: ' + IntToStr(Request.ServerPort) + '<br />');
    Page.Add('Request.URL: ' + Request.URL + '<br />');
    Page.Add('Request.UserAgent: ' + Request.UserAgent + '<br />');
    Page.Add('<hr>');
    Page.Add('</body>');
    Page.Add('</html>');
    Page.Add('');
    Page.Add('');
    Response.Content := Page.Text;
    Response.SendResponse;
  Finally
    Page.Free;
  End;
  Handled := True;
end;
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf