![]() |
AW: Das System kann den Pfad nicht finden
Im Request steht nicht
Delphi-Quellcode:
.
background=bgblue.jpg
Sondern über die Abfrage von
Delphi-Quellcode:
sollte man
[Request.QueryFields.Values['background']
Delphi-Quellcode:
erhalten.
bgblue.jpg
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
Delphi-Quellcode:
hier in sFile
sFile := Format('E:\DelphiXE8 Corner\DelphiXE8VclCorner\DelborWebserverXE8\DelborDataSnapServer\Images\background\%s', [Request.QueryFields.Values['background']]);
Delphi-Quellcode:
Das sollte man mal überprüfen und ebenfalls sollte man prüfen, ob es exakt diese Datei auch gibt.
E:\DelphiXE8 Corner\DelphiXE8VclCorner\DelborWebserverXE8\DelborDataSnapServer\Images\background\bgblue.jpg
|
AW: Das System kann den Pfad nicht finden
Also, der Sachverhalt stellt sich mir wie folgt dar:
Es erfolgt ein Request vom Browser mit dieser URL
Code:
Somit stellt sich folgende Denksportaufgabe:
http://localhost:8080/Images/background/bgblue.jpg
Zitat:
|
AW: Das System kann den Pfad nicht finden
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:
Delphi-Quellcode:
In den eckigen Klammern müsste der Dateiname stehen...
...\background\%s', [Request.QueryFields.Values['background']]);
Delphi-Quellcode:
Das scheint Delphi egal zu sein. In sFile steht der Pfad immer noch ohne Dateiname...
sFile := Format('E:\DelphiXE8 Corner\DelphiXE8VclCorner\DelborWebserverXE8\DelborDataSnapServer\html\Images\Logo\%s', [Request.QueryFields.Values['Delbor_9_5.jpg']]);
Gruss Delbor |
AW: Das System kann den Pfad nicht finden
@Delbor
Löse die Denksportaufgabe in ![]() |
AW: Das System kann den Pfad nicht finden
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 |
AW: Das System kann den Pfad nicht finden
Zitat:
Bitte einmal alle Informationen, sonst gibt das nie was! Für die Nutzung von Request muss die Url in etwa so aussehen:
Delphi-Quellcode:
Ist dem so?
http://localhost:8080/NameDeinerWebanwendung/Images?Image=Delbor_8.jpg
Mit der Abfrage des Dateinamens bei Value, wirst Du diesen nur bekommen, wenn die URL so aussieht:
Delphi-Quellcode:
Also nochmal: Im Quelltext steh immer:
http://localhost:8080/NameDeinerWebanwendung/Images?Delbor_9_5.jpg=Delbor_8.jpg
Delphi-Quellcode:
Und als Ergebnis bekommt man den Wert aus der Url der hinter
Request.QueryFields.Values['Images']
Delphi-Quellcode:
steht.
Image=
Mit einer URL der Form
Delphi-Quellcode:
wird das nie funktionieren, da hier keine Wertepaare für die Abfrage über Request.QueryFields.Values enthalten sind.
http://localhost:8080/Images/background/bgblue.jpg
|
AW: Das System kann den Pfad nicht finden
@nahpets
Welchen Request würdest du erwarten, wenn du im Source
Delphi-Quellcode:
findest? :stupid:
if Request.PathInfo = '/Images/background/bgblue.jpg' then
Damit das funktioniert müsste der Request so aussehen
Code:
um dann per
http://localhost:8080/Images/background/bgblue.jpg?background=bgblue.jpg
Delphi-Quellcode:
den Wert
Request.QueryFields.Values['background']
Delphi-Quellcode:
zu erhalten.
'bgblue.jpg'
Aber wer macht schon so einen doppelt gemoppelten Unfug? :stupid: |
AW: Das System kann den Pfad nicht finden
Zitat:
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
Delphi-Quellcode:
ausgehen, so müsste, um mit Request.QueryFields arbeiten zu können, die Url in etwa so aussehen:
if Request.PathInfo = '/Images/background/bgblue.jpg'
Delphi-Quellcode:
Und das wäre nach meiner Meinung absoluter Humbug.
http://localhost:8080/Images/background/bgblue.jpg?Images=Bildername.jpg'
|
AW: Das System kann den Pfad nicht finden
@nahpets
Genau das ist doch der springende Punkt. Die aufgerufene URL ist
Code:
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.
http://localhost:8080/Images/background/bgblue.jpg
Die PathInfo ist aber in diesem Fall
Delphi-Quellcode:
.
'/Images/background/bgblue.jpg'
Also muss man einfach nur mit dieser PathInfo zurechtkommen, denn mehr ist einfach nicht da. |
AW: Das System kann den Pfad nicht finden
@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.
Delphi-Quellcode:
Ist so natürlich Unsinn.
http://localhost:8080/Images/background/bgblue.jpg?background=bgblue.jpg
Ohne Nutzung von Request.QueryFields so:
Delphi-Quellcode:
http://localhost:8080/Images/background/bgblue.jpg
Mit Nutzung von Request.QueryFields so:
Delphi-Quellcode:
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz