Entwickler-Ecke

ASP.NET und Web - FTP-Upload-> # in Dateinamen benötigt.


Christoph1972 - Do 10.06.10 17:10
Titel: FTP-Upload-> # in Dateinamen benötigt.
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


Christoph1972 - 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?


Christian S. - 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.

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


Christoph1972 - 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!


Christian S. - 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. :-)


Christoph1972 - Mo 14.06.10 22:32

Na ja, ich bin genau so vorgegangen, leider nicht so erfolgreich. Vielen Dank noch mal!!