myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Netzwerktechnologien » Per FTP eine Datei hochladen C#
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Per FTP eine Datei hochladen C#

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
max1761995
myCSharp.de-Mitglied

Dabei seit: 21.02.2013
Beiträge: 23


max1761995 ist offline

Per FTP eine Datei hochladen C#

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hei zusammen

Ich versuche eine Datei auf meinen FTP server hochzuladen. Jedoch bekomme ich die Fehlermeldung :

Fehlermeldung:
System.Net.WebExeption: Die angeforderte URI ist für diesen FTP befehl ungültig.
bei System.Net.FtpWebRequest.GetReponse()
bei ftpupload.Form1.button7_Click(Object sender, EventArgs e)

Mein Code lautet wie folgt:

C#-Code:
private void button7_Click(object sender, EventArgs e)
        {
            string file1 = textBox4.Text;

            //Ein Request erstellen an den ftp Server
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create(new Uri("ftp://***" + file1));

            //Die Methode angeben um eine Datei hochzuladen
            request.Method = WebRequestMethods.Ftp.UploadFile;

            //Berechtigungsdetails setzen vom ftp Server durch Username und Passwort
            request.Credentials = new NetworkCredential("***", "***");

            try
            {
                //Versuch eine Verbindung zu erstellen und eine Antwort zu erhalten
                WebResponse response = request.GetResponse();
                MessageBox.Show("Response hat funktioniert");
            }
            catch (Exception exp)
            {
                MessageBox.Show(exp.ToString());
            }


            //Neuer FileStream erstellen für die Datei
            FileStream fs = new FileStream(@"C:\Users\Public\Pictures\Sample Pictures\Pinguine.jpg", FileMode.Open);
            byte[] fileContents = new byte[fs.Length];
            fs.Read(fileContents, 0, Convert.ToInt32(fs.Length));
            fs.Flush();
            fs.Close();

            //Ein neuen Stream für den Request erstellen dem der FileStream mitgegeben wird.
            Stream requestStream = request.GetRequestStream();
            requestStream.Write(fileContents, 0, fileContents.Length);
            requestStream.Close();

            //Verbindung abbschliessen
            request.Abort();
        }

Was ist genau der Fehler ?
Ich habe doch eine Uri erstellt....


Gruss


Max
Neuer Beitrag 22.02.2013 10:45 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 14.280
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Nein. Du versuchst von einer Uri eine Uri zu erstellen.
Lass das new Uri() weg und es geht. ftp:// ist schon das aussagekräftige hierbei.

Und schau Dir mal an, was IDisposable ist und wie man Stream und Co mit using() verwendet. Würde Deinem Code auch gut tun Daumen hoch
Neuer Beitrag 22.02.2013 10:48 Beiträge des Benutzers | zu Buddylist hinzufügen
max1761995
myCSharp.de-Mitglied

Dabei seit: 21.02.2013
Beiträge: 23

Themenstarter Thema begonnen von max1761995

max1761995 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

C#-Code:
private void button7_Click(object sender, EventArgs e)
        {
            string file1 = textBox4.Text;

            //Ein Request erstellen an den ftp Server
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://XXXX"+file1);

            //Die Methode angeben um eine Datei hochzuladen
            request.Method = WebRequestMethods.Ftp.UploadFile;

            //Berechtigungsdetails setzen vom ftp Server durch Username und Passwort
            request.Credentials = new NetworkCredential("***", "****");

            try
            {
                //Versuch eine Verbindung zu erstellen und eine Antwort zu erhalten
                WebResponse response = request.GetResponse();
                MessageBox.Show("Response hat funktioniert");
            }
            catch (Exception exp)
            {
                MessageBox.Show(exp.ToString());
            }


            //Neuer FileStream erstellen für die Datei
            FileStream fs = new FileStream(@"C:\Users\Public\Pictures\Sample Pictures\Pinguine.jpg", FileMode.Open);
            byte[] fileContents = new byte[fs.Length];
            fs.Read(fileContents, 0, Convert.ToInt32(fs.Length));
            fs.Flush();
            fs.Close();

            //Ein neuen Stream für den Request erstellen dem der FileStream mitgegeben wird.
            Stream requestStream = request.GetRequestStream();
            requestStream.Write(fileContents, 0, fileContents.Length);
            requestStream.Close();

            //Verbindung abbschliessen
            request.Abort();
        }

Mein neuer code....

Jedoch die genau gleiche Fehlermeldung :/

Mach ich immer noch etwas falsch ?
Neuer Beitrag 22.02.2013 10:57 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
chilic
myCSharp.de-Poweruser/ Experte

Dabei seit: 12.02.2010
Beiträge: 2.053


chilic ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Für mich sieht das allgemein etwas schräg aus. Zuerst holst du dir ein Response und wenn das alles schon passiert ist, willst du die Datei hochladen?
Ich würde mir eine FTP Komponente suchen und die verwenden.
Neuer Beitrag 22.02.2013 11:21 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
weismat
myCSharp.de-Mitglied

Dabei seit: 20.09.2005
Beiträge: 872
Entwicklungsumgebung: Vistual Studio 2017, VS Code
Herkunft: Frankfurt am Main


weismat ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ich mache den Upload mit webClient so...

C#-Code:
var webClient = new WebClient{
                                   Proxy=null,
                                   Credentials=new NetworkCredentials(userName, password),
                                   BaseAddress=ftpServerBase);
var remoteUri = ftpServerBase + path + fileName;
webClient.UploadFile(remoteUri, fileName);

ftpServerBase sieht so aus  ftp://adresse.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von weismat am 22.02.2013 11:31.

Neuer Beitrag 22.02.2013 11:31 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 7 Jahre.
Der letzte Beitrag ist älter als 7 Jahre.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 31.10.2020 20:09