Autor Beitrag
Christoph1972
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Do 10.06.10 17:10 
Hallo Leute,

ich muss eine Datei mittels FtpWebRequest auf einen FTP-Server senden. Der Dateiname muss eine # enthalten. Nun ist es jedoch so, das die Raute und alles was danach kommt einfach im Dateinamen fehlt. Eine Fehlermeldung gibt es leider nicht.


Hat jemand eine Idee, wie ich diese # im Dateinamen übergeben kann?


Moderiert von user profile iconChristian S.: Topic aus IO, XML und Registry verschoben am Mo 14.06.2010 um 21:06

_________________
Gruß
Christoph
Christoph1972 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Mo 14.06.10 20:23 
Hm, komisch komisch….

Diese blöde Raute ist ja scheinbar nicht mal ein Sonderzeichen. Ist das etwa ein Bug? Das bereitet mir ja wirklich Kopfzerbrechen, da eine Reihe anderer Anwendungen dieses # benötigen. Auch bei Google konnte ich nichts in finden, auch nicht im englischen.

Hat wirklich niemand einen Tipp für mich?

_________________
Gruß
Christoph
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 14.06.10 20:40 
Hallo!

Das Problem ist, dass beim FtpWebRequest mit einer Uri gearbeitet wird. Dabei wird alles nach dem "#" als nicht mehr zugehörig:
Doku:
Some URIs include a fragment identifier or a query or both. A fragment identifier is any text that follows a number sign (#), not including the number sign; the fragment text is stored in the Fragment property.


Du musst die Uri daher mittels des UriBuilder zusammensetzen, damit das Fragment nicht automatisch abgeschnitten wird.
ausblenden Delphi-Prism-Quelltext
1:
2:
3:
4:
5:
6:
  var ftpfullpath := new UriBuilder();
  ftpfullpath.Scheme := 'ftp';
  ftpfullpath.Host := ftphost; //z.B. "ftp.entwickler-ecke.de"
  ftpfullpath.Path := ftpfilepath; //Zielpfad inkl. Dateiname, also z.B. '/foo#bar.txt'

  var ftp := FtpWebRequest.Create(ftpfullpath.Uri) as FtpWebRequest;


Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Christoph1972 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Mo 14.06.10 21:24 
Einfach nur SUPER !

Sag mal wo hast du das denn her??? Ich habe mir wirklich einen Wolf gesucht, man man man.....


Das hat mir wirklich sehr geholfen!!!

Vielen Dank!

_________________
Gruß
Christoph
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 14.06.10 21:47 
Mich hat das Problem interessiert, also habe ich's erst einmal selber probiert und die Dateinamen wurden auch bei mir abgeschnitten. Irgendwann fiel mir halt auf, dass das 'ne Uri ist und "#" in einer Uri / Url halt eine besondere Bedeutung hat. Nachdem ich obigen Doku-Ausschnitt gelesen hatte, habe ich dann geguckt, wie man denn die einzelnen Teile von so 'ner Uri selber setzen kann. :-)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Christoph1972 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Mo 14.06.10 22:32 
Na ja, ich bin genau so vorgegangen, leider nicht so erfolgreich. Vielen Dank noch mal!!

_________________
Gruß
Christoph