Sendet eine Datei an einen FTP Server
#include <FTPEx.au3>
_FTP_FilePut ( $hFTPSession, $sLocalFile, $sRemoteFile [, $iFlags = 0 [, $iContext = 0]] )
$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. |
Erfolg: | 1. |
Fehler: | 0 und setzt das @error Flag auf ungleich null. |
$sLocalFile und $sRemoteFile können partiell oder der ganze Name sein, relativ zum aktuellen Verzeichnis.
_FTP_Connect, _FTP_FileOpen, _FTP_SetStatusCallback
Suche nach FtpPutFile in der MSDN Bibliothek.
#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