Announcement

Collapse
No announcement yet.

Download Progress von FTP mit WebClient

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Download Progress von FTP mit WebClient

    Hallo,

    Ich arbeite gerade an einem kleinen Update-Program für meine Anwendungen (Dank an gfoidl für den ShadowCopy-Beitrag).

    Die Verbindung mach ich mit der WebClient-Klasse (bzw. einer Ableitung davon). Um einen ProgressBar anzeigen zu können, wird der Download mit webClient.DownloadFileAsync gestartet.
    Das event webClient.DownloadProgressChanged ruft dann meinen EventHandler auf, der mit dem EventArgument e.ProgressPercentage meinen ProgressBar beschreibt.

    Das Ganze ist kein Problem, nur dass bei Downloads von FTP (bei passiver Verbindung) die Anzahl der Bytes der Datei nicht bekannt ist (der DownloadProgress ist immer 0).

    Die msdn weiss Rat:
    http://msdn.microsoft.com/de-de/libr...sschanged.aspx

    Mann macht eine neue Klasse, die von WebClient erbt und überschreibt die GetWebRequest methode (keine passiven ftp verbindungen) , den Code kopiert man einfach aus der msdn und verwendet nun MyWebClient;

    Code:
    internal class MyWebClient:WebClient{
            protected override WebRequest GetWebRequest(Uri address) {
                FtpWebRequest req = (FtpWebRequest)base.GetWebRequest(address);
                req.UsePassive = false;
                return req;
            }
        }
    Leider funktionierts mit dem msdn workaround auch (noch) nicht, das DownloadProgressChanged Event feuert richtig ab, die Anzahl der empfangenen Bytes stimmt, nur die GesamtAnzahl der Bytes im File (TotalBytesToReceive) ist immer (Uint64) -1.

    Hat noch jemand eine Idee, wie dem beizukommen ist?

    Danke im Voraus.

    Gruß,
    Uffze

  • #2
    Es klappt nun doch!

    Die TotalBytesToDownload werden nun richtig erfasst.
    Der Grund warum's nun funktioniert ist mir zwar nicht klar, da sich der Source seit dem letzten Buid nicht verändert hat (eine andere FTP-Verbindung war noch offen, vielleicht hatte das damit zu tun).
    Jedenfalls funktioniert's jetzt.

    Comment

    Working...
    X