FTP-Download mit anschließendem Rename

  • VB.NET
  • .NET (FX) 4.0

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von SchorschCode.

    FTP-Download mit anschließendem Rename

    Hallo,

    nach dem Download einer Datei von einem FTP-Server soll diese in ein anderes Verzeichnis verschoben werden.

    In Zeile 26 tritt dann folgender Fehlert auf:

    "Der Remoteserver hat einen Fehler zurückgegeben: (550) Datei nicht verfügbar (z.B. nicht gefunden oder kein Zugriff)."

    VB.NET-Quellcode

    1. ' Download starten
    2. Dim strSOURCE As String
    3. Dim strTARGET As String
    4. Dim wrDOWN = WebRequest.Create("ftp://meinserver.de/DOWN" & "/"c & "filename.txt")
    5. wrDOWN.Method = WebRequestMethods.Ftp.DownloadFile
    6. wrDOWN.Credentials = New NetworkCredential("Benutzer", "passwort")
    7. Dim dest = Path.Combine("C:\DOWNLOAD", "filename.xyz")
    8. Using respDOWN = wrDOWN.GetResponse(), strmResp = respDOWN.GetResponseStream,
    9. strmFile = New FileStream(dest, FileMode.Create)
    10. Dim buf(1023) As Byte
    11. Do
    12. Dim read = strmResp.Read(buf, 0, buf.Length)
    13. If read = 0 Then Exit Do
    14. strmFile.Write(buf, 0, read)
    15. Loop
    16. End Using
    17. ' Datei verschieben
    18. strSOURCE = Replace(Path.Combine("ftp://meinserver.de/DOWN", "filename.xyz"), "\", "/")
    19. strTARGET = Replace(Path.Combine("ftp://meinserver.de/DOWN", "ARCHIV", "filename.xyz"), "\", "/")
    20. ' Fehler bei folgendem Befehl:
    21. ' Der Remoteserver hat einen Fehler zurückgegeben: (550) Datei nicht verfügbar (z.B. nicht gefunden oder kein Zugriff).
    22. Dim wrRename As FtpWebRequest = CType(WebRequest.Create(strSOURCE), FtpWebRequest)
    23. wrRename.Credentials = New NetworkCredential("Benutzer", "passwort")
    24. wrRename.Method = WebRequestMethods.Ftp.Rename
    25. wrRename.RenameTo() = strTARGET
    26. Dim rResponse As FtpWebResponse
    27. rResponse = CType(wrRename.GetResponse, FtpWebResponse)
    28. Dim strStatusDesc As String = rResponse.StatusDescription
    29. Dim strStatusCode As FtpStatusCode = rResponse.StatusCode
    30. If strStatusCode <> FtpStatusCode.FileActionOK Then
    31. MsgBox("Rename fehlgeschlagen. Status = " & strStatusCode & " " & strStatusDesc)
    32. End If


    Die Pfadnamen passen beim Ausführen. Muss die "Download"-Verbindung erst geschlossen werden. Wenn ja, wie?

    Danke im voraus!
    Der Inhalt von strSOURCE wird ja in Zeile 21 gesetzt. Der Inhalt ist identisch mit dem Inhalt aus "Create" in Zeile 5.

    In einer neuen Version gibt es nur noch eine Zeile, in der strSOURCE gefüllt wird (vor Zeile 5). Der Download klappt wunderbar, der Rename mit demselben Pfad nicht.

    Es hat auch nichts mit dem Verzeichnis ARCHIV zu tun. Selbst wenn ich aus der Endung ".xyz" z.B. ".DEL" mache und den Rename im selben Verzeichnis durchführen möchte, kommt der Fehler.


    Edit:

    Fehler gefunden!

    Im Feld strTARGET (Zeile 22) darf nicht noch einmal der Server stehen (in diesem Beispiel "ftp://meinserver.de"). Dann geht es.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „SchorschCode“ ()