Problem mit FTP Upload zu System i (AS400)

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von offle.

    Problem mit FTP Upload zu System i (AS400)

    Hallo zusammen,

    leider bin ich noch recht unerfahren mit VB. Hoffentlich könnt ihr mir helfen. Google konnte es nicht :(


    Ich habe ein Problem mit dem Upload einer lokalen Datei auf eine AS400.Der Trace gibt mir folgende FTP Fehlermeldung:

    501 Specified object name too long, limit is 10 characters: LIB/TEST.FIL.


    Quellcode:

    VB.NET-Quellcode

    1. Dim lokal As String = "C:\temp\savfile"
    2. Dim remote As String = "ftp://192.168.x.x/QSYS.LIB/TEST.LIB/TEST.FILE"
    3. Dim benutzer As String = "user"
    4. Dim passwort As String = "pw"
    5. Dim sreader As New StreamReader(lokal)
    6. Dim fileContents As Byte() = Encoding.UTF8.GetBytes(sreader.ReadToEnd())
    7. sreader.Close()
    8. Dim ftp As System.Net.FtpWebRequest = FtpWebRequest.Create(remote)
    9. ftp.Credentials = New NetworkCredential(benutzer, passwort)
    10. ftp.Method = System.Net.WebRequestMethods.Ftp.UploadFile
    11. ftp.Proxy = Nothing
    12. ftp.KeepAlive = False
    13. ftp.UseBinary = True
    14. ftp.UsePassive = False
    15. ftp.GetRequestStream.Write(fileContents, 0, fileContents.Length)
    16. MsgBox("OK")



    Gibt es mit dem System.Net.FtpWebRequest die Möglichkeit, den Pfad und den Systemnamen getrennt von einander zu übergeben? Der AS400 FTP Server scheint dort wohl etwas eigen zu sein. Wenn ich mit der ftp.exe übertrage funktionert der Pfad /QSYS.LIB/TEST.LIB/TEST.FILE ohne Probleme. Eventuell kennt hier ja jemand das Problem (und die Lösung^^) oder hat eine Idee.

    Vielen Dank für die Hilfe
    Moin,

    erstmal will ich eine hochladen. Natürlich später auch den Download mit einbauen. Nur wenn eins nicht funktioniert brauch ich gar nicht weiterprobieren ;)

    Das FTPLib aus deiner Signatur habe ich auch schon probiert. Allerdings habe ich dort nichts gefunden um auf Active Mode umzuschalten. Beim passive Mode mit FTPLib gibt der Server nen Fehler aus, dass er den nicht mag. Habe leider meinen Firmenrechner mit der FTP-Meldung nicht zur Hand. Poste ich morgen hier rein.

    EDIT 11.45h Da hat sichs wohl grad überschnitten. Vielen Dank. Dann warte ich einfach auf die neue Version =)


    Moin,
    FTPLibDEMO habe ich testweise in folgenden Zeilen angepasst:

    VB.NET-Quellcode

    1. Dim locFTP As New FTP("192.168.x.x", "user", "pw", 21)


    und in

    VB.NET-Quellcode

    1. Private Sub btnHochladen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHochladen.Click
    2. ' Datei hochladen
    3. locFTP.Upload("C:\temp\test", "TEST.FILE")
    4. End Sub


    auch habe ich versucht, den beim Upload den Remotepfad /QSYS.LIB/TERST.LIB/TEST.FILE mitzugeben

    Der FTP Trace zeigt mir nun Folgendes.



    220-QTCP at SYSTEM.
    220 Connection will close if idle more than 5 minutes.
    331 Enter password.
    230 USER logged on.
    501 OPTS unsuccessful; specified subcommand not recognized.
    257 "QGPL" is current library.
    200 Representation type is binary IMAGE.
    227 Entering Passive Mode (192,168,x,x,197,135).
    221 QUIT subcommand received.


    und wenn ich auf Hochladen klicke:


    220-QTCP at SYSTEM.
    220 Connection will close if idle more than 5 minutes.
    331 Enter password.
    230 USER logged on.
    501 OPTS unsuccessful; specified subcommand not recognized.
    257 "QGPL" is current library.
    200 Representation type is binary IMAGE.
    200 PORT subcommand request successful.
    425 Not able to open data connection.
    221 QUIT subcommand received.

    Der "425 Not able to open data connection" ist ein Problem mit dem Passive Mode. Leider kann ich die Netzwerkeinstellungen nicht in jeder Umgebung anpassen. Ist er möglich die Verbindung bei FTPLib auf Aktiv zustellen?