Laden...

FTP Upload

Erstellt von PC17 vor 13 Jahren Letzter Beitrag vor 11 Jahren 5.024 Views
P
PC17 Themenstarter:in
73 Beiträge seit 2009
vor 13 Jahren
FTP Upload

Hallo Leute,

bei mir funktioniert irgendwie der Upload nicht, vl verwende ich die falschen Daten.
Hier mal die Daten vom FTP acc https://www.drivehq.com/ftp/

Code:

 private void button1_Click(object sender, EventArgs e)
        {
            // Get the object used to communicate with the server.
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://ftp.drivehq.com");   //bin mir nicht sicher ob der Server Name so stimmt über Filezilla geht es mit ftp.drivehq.com schon.
            request.Method = WebRequestMethods.Ftp.UploadFile;

            // This example assumes the FTP site uses anonymous logon.
            request.Credentials = new NetworkCredential("USER", "Password");

            // Copy the contents of the file to the request stream.
            StreamReader sourceStream = new StreamReader("C:\\testfile.txt");
            byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
            sourceStream.Close();
            request.ContentLength = fileContents.Length;

   ***    Stream requestStream = request.GetRequestStream();
            requestStream.Write(fileContents, 0, fileContents.Length);
            requestStream.Close();

            FtpWebResponse response = (FtpWebResponse)request.GetResponse();

            MessageBox.Show("Upload File Complete, status {0}", response.StatusDescription);

            response.Close();

        }

Fehlermeldung:

Der angeforderte URI ist für diesen FTP-Befehl ungültig.

Vl kann mir jemand weiterhelfen.

MfG PC17

A
118 Beiträge seit 2009
vor 13 Jahren

Du musst noch angeben, unter welchem Namen und in welches Verzeichnis du die Datei hochladen willst.

Gruss Aratar

P
PC17 Themenstarter:in
73 Beiträge seit 2009
vor 13 Jahren

Ja einfach mal auf den Acc das Verzeichniss ist egal.
Wo muss ich den Namen eingeben? Wo muss ich das ändern?

93 Beiträge seit 2008
vor 13 Jahren

Hi PC17,

die Doku sollte dir dazu weiterhelfen, siehe hier: FtpWebRequest Class

Gruß,
Tom

P
PC17 Themenstarter:in
73 Beiträge seit 2009
vor 13 Jahren

Okay, er meinte das ich noch den Dateinnamen/genauen Pfad hinzufügen soll.
In diesem Fall so "ftp://ftp.drivehq.com/testfile.txt" aber irgendwie spinnt der FTP Acc immer einmal kann man sicher verbinden mit Filezilla dann wieder nicht.
Kennt jemand einen guten FTP Acc Anbieter kostenlos?

P
PC17 Themenstarter:in
73 Beiträge seit 2009
vor 13 Jahren

Ich habe jetzt schon 3 verschiedene FTP Acc ausprobiert und bei jedem kommt die Fehlermeldung:

Die zugrunde liegende Verbindung wurde geschlossen: Der Server hat eine Protokollverletzung ausgeführt..

Ich kann mich auch nur manchmal mit Filezilla zu den Acc verbinden. Aber wenn ich mich über die Webseite einlogge funktioniert alles.??

Edit: Hat sich erledigt.
Danke für eure Hilfe

MfG Pc17

E
395 Beiträge seit 2007
vor 11 Jahren

hey,

auch wenn zu spaet aber netter crossposte.. danke Entwickler ecke

um zum thema zu kommen, bei mir fliegt die selbe fehlermeldung. und das wo gar keine firewall an ist.

hat vlt jemand nen tipp in welche richtung ich suchen und/oder probieren kann?

MfG Paul

3.170 Beiträge seit 2006
vor 11 Jahren

Hallo,

hast Du im WebRequest.Create den kompletten Pfad bis auf das gewünschte Verzeichnis, in dem Du Schreibrechte hast, angegeben?
Hast Du den Dateinamen mit im Pfad?

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

E
395 Beiträge seit 2007
vor 11 Jahren

hallo,

ja. ich hab den kompletten pfad inclusive dateiname bis zu der datei angegeben.
imoment versuche ich nur ein download der datei.

ich habe auch mal, kurz vor der mittagspause, Simple FTP ausprobiert und konnte auch mit dem bsp. keine verbindung herstellen.

was eventuell noch wichtig sein kann ist das ich zu dem geraet vorher ueber DotRas eine verbindung herstelle.

MfG Paul

E
395 Beiträge seit 2007
vor 11 Jahren

ich doppelposte jetzt mal damit das nicht im edit untergeht.

der von mir angesprochen FTP server laeuft auf einen embedded geraet und scheint falsch konfiguriert zu sein oder so... mir auch jetzt egal.
da troz dem

  <system.net>
    <settings>
      <httpWebRequest useUnsafeHeaderParsing="true"/>
    </settings>
  </system.net>

trick eine verbindnug nicht moeglich war bin ich weiter auf die suche gegangen und habe in verbindnug mit dem suchbegrif "wininet.dll" (einer feinen windows dll fuer internet und ftp zugriffe welche in einen c++ projeckt mit dem verwendedeten embedded geraet gesprochen hat) c# ftp client gefunden.

zu beachten sind noch die beiden kommentar wonach in der funktion "funIOpen" die beiden string variablen mit null statt mit "" initialiesiert werden solten und das bei den DllImprten unter .Net2.0 "ulong" in "uint" geaendert werden muss.

MfG Paul

3.170 Beiträge seit 2006
vor 11 Jahren

Hallo,

dass ein Setting für HttpWebRequest hier nicht greift, dürfte klar sein, da ja ein FtpWebRequest erstellt wird. Das würde nur etwas bewirken,m wenn FTP über HTTP getunnelt werden soll, und dann demnentsprechend ein HttpWebRequest erstellt wird.

Da es aber offenbar an einem fehlerhaft konfigurierten FTP-Server liegt, würde ich mich an Deiner Stelle darum kümmern, deie Ursache und nicht die Symptome zu bekämpfen.

Möglicherweise liegt es einfach daran, dass der FTP-Server keinen passiven Modus unterstützt. Dieser ist Defaulteinstellung beim FtpWebRequest. Wenn Du herausfinden willst, ob es daran liegt, könntest Du FtpWebRequest.UsePassive mal auf false setzen -> dann darf der Client allerdings nicht hinter einer Firewall sitzen. Und für den passiven Modus muss eben der Server richtig konfiguriert werden...

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

E
395 Beiträge seit 2007
vor 11 Jahren

Hey,

das mit dem HttpWebRequest wo ich eigentlich ein FtpWebRequst stehen solte (von der logik her) ist mir auch aufgestoßen. aber scheinbar gilt das fuer beides. zumindest habe ich nix weiter dazu gefunden.

und wegen den fehlerhaften FtpServer... das ist leider nicht meine baustelle. Die nachricht ist an die zustaendigen Entwickler rausgegangen.

MfG Paul