tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
8
ZUGRIFFE
699
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Raven280438 Raven280438 ist offline Mitglied Brokat
    Registriert seit
    Aug 2007
    Beiträge
    329
    Hi,

    ich möchte eine Datei auf einen FTP-Server hochladen. Dass das mit
    Code :
    1
    
    request.Method = WebRequestMethods.Ftp.UploadFile;
    geht weis ich.

    Wie kann ich aber die Berechtigungen und den Owner der Datei setzen?


    Gruß
     

  2. #2
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Hallo Raven,

    das wird aus sicherheitsgründen Serverseitig realisiert. Die Berechtigungen werden vom auf dem FTP-Server eingeloggten User übernommen. Wenn Du unterschiedliche User verwenden möchtest, muss der FTP-Server diese "kennen" und Du musst Dich entsprechend einloggen und dann die Datei hochladen.

    OT:
    Btw, bist Du bei deinem SOAP-Problem schon weiter gekommen?
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  3. #3
    Raven280438 Raven280438 ist offline Mitglied Brokat
    Registriert seit
    Aug 2007
    Beiträge
    329
    Hi,

    gibt es da keine Möglichkeit die Berechtigung zu ändern? Ich hab ein Tool mit dem man ein FTP-Backup erstellen kann. Da gibt es auch Dateien die root gehören, oder CHMOD 0777 haben. Wenn ich das Backup wieder einspiele, muss das ja wieder zurückgesetzt werden.

    Wäre das mit ner WinSocket Verbindung möglich (Hab noch nich so viel Ahnung von C#, gibts sowas überhaupt? Komme eher aus de PHP/C++ Ecke )


    OT:
    Ne damit bin ich nicht weiter gekommen. Hab mit dem Admin gesprochen, das ist kein richtiger SOAP Server, nur sowas selbst gebautes. Ich hab jetzt den Umweg über eine PHP-API genommen, die noch angeboten wird


    Gruß
    Geändert von Raven280438 (27.07.11 um 12:58 Uhr)
     

  4. #4
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Wenn es nur die reinen Berechtigungen ohne User sein sollen dann:

    - c# ftp chmod
    -> Changing Permissons of FTP'ed File

    OT: Wenn es kein richtiger SOAP-Server sein soll Du aber eine WSDL-Datei hast? Verstehen muss ich das jetzt nich oder? Markier den Thread bitte trotzdem als erledigt.
    Geändert von Christian Kusmanow (27.07.11 um 15:08 Uhr)
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  5. #5
    Raven280438 Raven280438 ist offline Mitglied Brokat
    Registriert seit
    Aug 2007
    Beiträge
    329
    Hi,

    bei dem Link Changing Permissons of FTP'ed File gibts einen VB.NET Schnippsel der mit einer TCP Connection arbeitet.

    Den werd ich mir mal anschauen und probieren un C# zu übertragen
    Auch wenn meine Ausbildung (in der ich ein bisschen VB programmiert hab) schon lange zurück liegt ...


    Gruß
     

  6. #6
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Fein, wichtig sind ja nur die Klassen und Methoden die verwendet werden. Dein Ergebnis kannst Du dann gerne hier (und für die Nachwelt) posten. Vielleicht kann man das dann gemeinsam noch etwas optimieren...
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  7. #7
    Raven280438 Raven280438 ist offline Mitglied Brokat
    Registriert seit
    Aug 2007
    Beiträge
    329
    Hi,

    ich hab mir jetzt mit Hilfe des VB-Codes eine Klasse gebaut:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    
        public class CFTP
        {
            public TcpClient tcpClient = null;
            public bool TcpConnected = false;
            public bool TcpLoggedin = false;
            private NetworkStream netStream = null;
     
            public String Domain = null;
            public int Port = 21;
            public String User = null;
            public String Pass = null;
     
            public CFTP(String hostname, int port=21)
            {
                this.tcpClient = new TcpClient(hostname, port);
     
                this.Domain = hostname;
                this.Port = port;
     
                String response = this.GetResponse("Hello");
                if (response.Substring(0, 3) == "220")
                {
                    this.TcpConnected = true;
                }
                else
                {
                    this.TcpConnected = false;
                    throw new Exception("Es konnte keine Verbindung zum FTP-Server hergestellt werden!");
                }
            }
     
            public void Close()
            {
                if (this.netStream != null)
                {
                    this.netStream.Close();
                    this.netStream = null;
                }
                if (this.tcpClient != null)
                {
                    this.tcpClient.Close();
                    this.tcpClient = null;
                }
            }
     
            public bool Login(String user, String pass)
            {
                this.User = user;
                this.Pass = pass;
     
                if (this.TcpLoggedin == true)
                {
                    //schon verbunden
                    return true;
                }
     
                if (this.TcpConnected == true)
                {
                    this.GetResponse("USER " + this.User);
                    this.GetResponse("USER " + this.User);
                    String response = this.GetResponse("PASS " + this.Pass);
                    if (response.Substring(0, 3) == "230")
                    {
                        this.TcpLoggedin = true;
                        return true;
                    }
                    else
                    {
                        this.TcpLoggedin = false;
                        throw new Exception("Login oder Password falsch!");
                    }
                }
     
                return false;
            }
     
            public String GetResponse(String command)
            {
                this.netStream = this.tcpClient.GetStream(); /* TODO: Hier Socket Fehler ... */
     
                if (this.netStream.CanWrite)
                {
                    Byte[] sendBytes = Encoding.UTF8.GetBytes(command);
                    this.netStream.Write(sendBytes, 0, sendBytes.Length);
                }
                else
                {
                    //cannot write
                    this.netStream.Close();
                    return null;
                }
     
                if (this.netStream.CanRead)
                {
                    Byte[] bytes = new Byte[this.tcpClient.ReceiveBufferSize];
                    this.netStream.Read(bytes, 0, this.tcpClient.ReceiveBufferSize);
     
                    String returndata = Encoding.ASCII.GetString(bytes);
     
                    this.netStream.Close();
     
                    return returndata;
                }
                else
                {
                    //cannot read
                    this.netStream.Close();
                    return null;
                }
            }

    Leider funktioniert das noch nicht so richtig...

    Der Connect (im Konstruktor) funktioniert. Beim Login gibt es aber dann eine Exception in der Zeile
    Code :
    1
    
    this.netStream = this.tcpClient.GetStream();
    :
    Der Vorgang ist für nicht verbundene Sockets unzulässig.
    Ich habe die Vermutung, dass die Verbindung nach dem Connect irgendwie wieder zugemacht wird, ich weis nur nicht wo und warum.

    Kann mir jemand weiterhelfen?


    Gruß
     

  8. #8
    Avatar von Turri
    Turri Turri ist offline Mitglied Brokat
    Registriert seit
    Jun 2005
    Beiträge
    354
    Hallo,

    dein Client muss sich erst connecten zum Server bevor du dir den Stream holen kannst..
    Das passiert nicht mit dem Konstruktor der Client Klasse.
    Code csharp:
    1
    2
    3
    4
    5
    
    ...
    TcpClient client = new TcpClient();
    IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse("deine IP"), "dein Port"); 
    client.Connect(serverEndPoint);
    ...
     
    MfG Turri

    PS: Wenn ich helfen konnte, würde ich mich über ein Danke oder eine positive Bewertung freuen. :-)

  9. #9
    Raven280438 Raven280438 ist offline Mitglied Brokat
    Registriert seit
    Aug 2007
    Beiträge
    329
    HI,

    danke für die Antwort. Ich dachte das connecten geschieht automatisch, wenn ich bei new TcpClient einen Hostnamen und Port angeben.

    Werd ich morgen gleich mal ausprobieren...


    Gruß
     

Ähnliche Themen

  1. Berechtigungen auf Webserver
    Von _Alex_ im Forum Hosting & Webserver
    Antworten: 1
    Letzter Beitrag: 04.04.11, 15:23
  2. Access Berechtigungen
    Von schieflo im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 17.05.06, 20:54
  3. Berechtigungen bei Exchange
    Von Robert Steichele im Forum Netzwerke
    Antworten: 0
    Letzter Beitrag: 24.01.05, 19:37
  4. Berechtigungen Rechte
    Von tecme im Forum Microsoft Windows
    Antworten: 0
    Letzter Beitrag: 11.06.04, 09:19