Funktionreferenz


_FTP_FilePut

Beschreibung anzeigen in

Sendet eine Datei an einen FTP Server

#include <FTPEx.au3>
_FTP_FilePut ( $hFTPSession, $sLocalFile, $sRemoteFile [, $iFlags = 0 [, $iContext = 0]] )

Parameter

$hFTPSession Rückgabewert von _FTP_Connect()
$sLocalFile Der lokale Dateiname.
$sRemoteFile Der Pfadname auf dem Server.
$iFlags [optional] Bestimmen die Umstände, unter denen die Übertragung stattfinden soll. Die Anwendung sollte einen Übermittlungstyp und irgend einen der Flags enthalten, die anzeigen, wie das Puffern kontrolliert wird.

Der Übermittlungstyp kann einer der folgenden Werte sein:
    $FTP_TRANSFER_TYPE_ASCII (1) - Übermittelt die Datei per FTP-ASCII-Übertragungsmethode (Typ A). Steuerungs- und Formatierungsinformationen werden entsprechend geändert.
    $FTP_TRANSFER_TYPE_BINARY (2) - Übermittelt die Datei per FTP-Abbild-Übertragungsmethode (Typ I). Die Datei wird exakt so, wie sie ist, ohne Änderungen übermittelt. (Standard)
    $FTP_TRANSFER_TYPE_UNKNOWN (0) - Setzt $FTP_TRANSFER_TYPE_BINARY als Standard
    $INTERNET_FLAG_TRANSFER_ASCII (1) - Übermittelt die Datei als ASCII
    $INTERNET_FLAG_TRANSFER_BINARY (2) - Übermittelt die Datei binär

Die folgenden Werte werden für die Kontrolle des Pufferns der Datei benutzt. Die Anwendung kann einen oder mehrere dieser Werte benutzen:
    $INTERNET_FLAG_HYPERLINK (0x00000400) - Erzwingt die Datei neuzuladen, wenn keine Fristablaufzeit oder Modifikationszeit vom Server zurückgegeben wird, während festgestellt wird, ob das Objekt vom Netzwerk neuzuladen ist.
    $INTERNET_FLAG_NEED_FILE (0x00000010) - Eine temporäre Datei wird erstellt, wenn die Datei nicht gepuffert werden kann.
    $INTERNET_FLAG_RELOAD (0x80000000) - Erzwingt das Herunterladen der angefragten Datei, des Objekts oder des Verzeichnisses vom originalen Server und nicht vom Cache.
    $INTERNET_FLAG_RESYNCHRONIZE (0x00000800) - Lädt HTTP-Quellen neu, wenn die Quelle nach dem letzten Download geändert wurde. Alle FTP und Gopher Quellen werden neu geladen.
$iContext [optional] Eine Variable, die den anwendungsdefinierten Wert enthält, der diese Suche mit Anwendungsdaten verbindet.
Dies wird nur benutzt, wenn die Anwendung bereits _FTP_SetStatusCallback() aufgerufen hat, um eine Status-Callbackfunktion zu setzen.

Rückgabewert

Erfolg: 1.
Fehler: 0 und setzt das @error Flag auf ungleich null.

Bemerkungen

$sLocalFile und $sRemoteFile können partiell oder der ganze Name sein, relativ zum aktuellen Verzeichnis.

Verwandte Funktionen

_FTP_Connect, _FTP_FileOpen, _FTP_SetStatusCallback

Siehe auch

Suche nach FtpPutFile in der MSDN Bibliothek.

Beispiel

#region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <FTPEx.au3>
#include <File.au3>
#include <Array.au3>

Opt('MustDeclareVars', 1)

_example1()
_example2()

Func _example1()
    ;lädt eine Datei hoch
    Local $s_ServerName = 'guest.autobert.myplace.net' ;dieser Server existiert nicht
    Local $s_Username = "guest"
    Local $s_Password = "TopSecret"


    Local $s_LocalFile = @ScriptDir & "\_FTP_FilePut3.au3"
    Local $s_RemoteFile = "/FTPTestfiles/_FTP_FilePut3.au3"
    Local $i_Passive = 0
    Local $l_InternetSession, $l_FTPSession, $errOpen, $errFTP

    $l_InternetSession = _FTP_Open('AuoItZilla') ;Öffnet eine FTP Sitzung
    $errOpen = @error
    If Not @error Then
        $l_FTPSession = _FTP_Connect($l_InternetSession, $s_ServerName, $s_Username, $s_Password, $i_Passive) ;Verbindet zu einem FTP Server
        $errFTP = @error
        If Not @error Then
            If _FTP_FilePut($l_FTPSession, $s_LocalFile, $s_RemoteFile) Then
                ConsoleWrite("Upload: erfolgreich" & @CRLF)
            Else
                ConsoleWrite("Upload: fehlgeschlagen " & " " & @error & @CRLF)
            EndIf
        Else
            MsgBox(0, "Connect", "fehlgeschlagen")
            ConsoleWrite("Connect: " & " " & $errFTP & @CRLF)
        EndIf
    Else
        MsgBox(0, "Open", "fehlgeschlagen")
        ConsoleWrite("Open " & " " & $errOpen & @CRLF)
    EndIf
    _FTP_Close($l_InternetSession) ;schliesst die FTP-Sitzung
EndFunc   ;==>_example1

Func _example2()
    ;lädt alle Dateien eines Ordner mithilfe  _FTP_FilePut auf den FTP-Server (noch ohne Unterordner)
    Local $s_ServerName = 'guest.autobert.myplace.net' ;dieser Server existiert nicht
    Local $s_Username = "guest"
    Local $s_Password = "TopSecret"

    Local $s_LocalFolder = @ScriptDir ;das angegebene Verzsichnis muss existieren
    Local $s_RemoteFolder = "/FTPTestfiles/Test/" ;dieser Ordner wird notfalls angelegt
    Local $i_Passive = 0 ;manche Server benötigen hier eine 1 für Passiven Modus
    Local $l_InternetSession, $l_FTPSession, $errOpen, $errFTP

    $l_InternetSession = _FTP_Open('AuoItZilla') ;Öffnet eine FTP Sitzung
    $errOpen = @error
    If Not @error Then
        $l_FTPSession = _FTP_Connect($l_InternetSession, $s_ServerName, $s_Username, $s_Password, $i_Passive) ;Verbindet zu einem FTP Server
        $errFTP = @error
        If Not @error Then
            _FolderPut($l_FTPSession, $s_LocalFolder, $s_RemoteFolder, "_FTP*3.au3") ;kopiert alle au3 Dateien
            If Not @error Then
                ConsoleWrite("_FolderPut: " & @extended & " Dateien erfolgreich übertragen" & @CRLF)
            Else
                ConsoleWrite("_FolderPut Fehler:" & @error & " " & @extended & @CRLF)
            EndIf
        Else
            MsgBox(0, "Connect", "fehlgeschlagen")
            ConsoleWrite("Connect: " & " " & $errFTP & @CRLF)
        EndIf
    Else
        MsgBox(0, "Open", "fehlgeschlagen")
        ConsoleWrite("Open " & " " & $errOpen & @CRLF)
    EndIf
    _FTP_Close($l_InternetSession) ;schliesst die Sitzung
EndFunc   ;==>_example2

Func _FolderPut($l_FTPSession, $s_LocalFolder, $s_RemoteFolder, $sFilter = "*")
    Local $bDebugFP = True ;um Debuginfos an- auszuschalten
    If $bDebugFP Then ConsoleWrite("Lokal " & $s_LocalFolder & " Remote " & $s_RemoteFolder & @CRLF)
    If StringRight($s_RemoteFolder, 1) <> "/" Then $s_RemoteFolder &= "/"
    If StringLeft($s_RemoteFolder, 1) <> "/" Then $s_RemoteFolder = "/" & $s_RemoteFolder
    Local $aPathSplit = StringSplit($s_RemoteFolder, "/")
    _ArrayDisplay($aPathSplit)
    For $i = 2 To $aPathSplit[0] - 1 ;Element 1 ist leer ebenso letztes durch StringTrim.....
        If $bDebugFP Then ConsoleWrite($aPathSplit[$i])
        _FTP_DirSetCurrent($l_FTPSession, $aPathSplit[$i])
        If @error Then
            If $bDebugFP Then ConsoleWrite(@TAB & "wird versucht anzulegen" & @TAB)
            _FTP_DirCreate($l_FTPSession, $aPathSplit[$i])
            _FTP_DirSetCurrent($l_FTPSession, $aPathSplit[$i])
            If @error Then
                If $bDebugFP Then ConsoleWrite("Fehler " & @error & @CRLF)
                SetError(1, $i)
                Return 0
            Else
                If $bDebugFP Then ConsoleWrite("OK" & @CRLF)
            EndIf
        Else
            If $bDebugFP Then ConsoleWrite("/")
        EndIf
    Next
    If $bDebugFP Then ConsoleWrite(@CRLF & "Aktuelles Verzeichnis" & _FTP_DirGetCurrent($l_FTPSession) & @CRLF)
    Local $aUpload_Files = _FileListToArray($s_LocalFolder, $sFilter, 1)
    Local $iErrors = 0
    Local $iSuccess = 0
    For $i = 1 To $aUpload_Files[0]
        If $bDebugFP Then ConsoleWrite($aUpload_Files[$i] & @TAB)
        If _FTP_FilePut($l_FTPSession, $aUpload_Files[$i], $aUpload_Files[$i]) Then
            $iSuccess += 1
            If $bDebugFP Then ConsoleWrite("OK" & @CRLF)
        Else
            $iErrors += 1
            If $bDebugFP Then ConsoleWrite("Fehler: " & @error & @CRLF)
        EndIf
    Next
    If $iErrors > 0 Then
        SetError(2, $iErrors, 0)
    Else
        SetExtended($iSuccess)
    EndIf
EndFunc   ;==>_FolderPut