FTP Upload

  • Hi,
    ich weiss es gibt schon mehrere Themen zu diesem Thema aber ich bekomme es einfach nicht hin :(

    [autoit]

    #include <FTP.au3>
    $server = 'sever'
    $username = 'bn'
    $pass = 'pw'
    $Hand = _FTPOpen('Server')

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    _FTPConnect($Hand, $server, $username, $pass)
    if @error then msgbox(0,"Error","Connect", 3)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    _FTPMakeDir($Hand, 'Psychware')
    if @error then msgbox(0,"Error","MakeDir", 3)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    _FtpPutFile($Hand, $Dateipfad & $Dateiname, '/Psychware/')
    if @error then msgbox(0,"Error","PutFile 3", 3)

    [/autoit]


    Fehler gibt es bei _FTPMakeDir und _FTPPutFile. Connecten kann er anscheinend schon.

    Villt noch für euch interessant meine FTP.au3:

    Spoiler anzeigen
    [autoit]

    ;===============================================================================
    ;
    ; Function Name: _FTPOpen()
    ; Description: Opens an FTP session.
    ; Parameter(s): $s_Agent - Random name. ( like "myftp" )
    ; $l_AccessType - I dont got a clue what this does.
    ; $s_ProxyName - ProxyName.
    ; $s_ProxyBypass - ProxyByPasses's.
    ; $l_Flags - Special flags.
    ; Requirement(s): DllCall, wininet.dll
    ; Return Value(s): On Success - Returns an indentifier.
    ; On Failure - 0 and sets @ERROR
    ; Author(s): Wouter van Kesteren.
    ;
    ;===============================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _FTPOpen($s_Agent, $l_AccessType = 1, $s_ProxyName = '', $s_ProxyBypass = '', $l_Flags = 0)

    [/autoit] [autoit][/autoit] [autoit]

    Local $ai_InternetOpen = DllCall('wininet.dll', 'long', 'InternetOpen', 'str', $s_Agent, 'long', $l_AccessType, 'str', $s_ProxyName, 'str', $s_ProxyBypass, 'long', $l_Flags)
    If @error OR $ai_InternetOpen[0] = 0 Then
    SetError(-1)
    Return 0
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Return $ai_InternetOpen[0]

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==> _FTPOpen()

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Function Name: _FTPConnect()
    ; Description: Connects to an FTP server.
    ; Parameter(s): $l_InternetSession - The Long from _FTPOpen()
    ; $s_ServerName - Server name/ip.
    ; $s_Username - Username.
    ; $s_Password - Password.
    ; $i_ServerPort - Server port ( 0 is default (21) )
    ; $l_Service - I dont got a clue what this does.
    ; $l_Flags - Special flags.
    ; $l_Context - I dont got a clue what this does.
    ; Requirement(s): DllCall, wininet.dll
    ; Return Value(s): On Success - Returns an indentifier.
    ; On Failure - 0 and sets @ERROR
    ; Author(s): Wouter van Kesteren
    ;
    ;===============================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _FTPConnect($l_InternetSession, $s_ServerName, $s_Username, $s_Password, $i_ServerPort = 0, $l_Service = 1, $l_Flags = 0, $l_Context = 0)

    [/autoit] [autoit][/autoit] [autoit]

    Local $ai_InternetConnect = DllCall('wininet.dll', 'long', 'InternetConnect', 'long', $l_InternetSession, 'str', $s_ServerName, 'int', $i_ServerPort, 'str', $s_Username, 'str', $s_Password, 'long', $l_Service, 'long', $l_Flags, 'long', $l_Context)
    If @error OR $ai_InternetConnect[0] = 0 Then
    SetError(-1)
    Return 0
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Return $ai_InternetConnect[0]

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==> _FTPConnect()

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Function Name: _FTPPutFile()
    ; Description: Puts an file on an FTP server.
    ; Parameter(s): $l_FTPSession - The Long from _FTPConnect()
    ; $s_LocalFile - The local file.
    ; $s_RemoteFile - The remote Location for the file.
    ; $l_Flags - Special flags.
    ; $l_Context - I dont got a clue what this does.
    ; Requirement(s): DllCall, wininet.dll
    ; Return Value(s): On Success - 1
    ; On Failure - 0
    ; Author(s): Wouter van Kesteren
    ;
    ;===============================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _FTPPutFile($l_FTPSession, $s_LocalFile, $s_RemoteFile, $l_Flags = 0, $l_Context = 0)

    [/autoit] [autoit][/autoit] [autoit]

    Local $ai_FTPPutFile = DllCall('wininet.dll', 'int', 'FtpPutFile', 'long', $l_FTPSession, 'str', $s_LocalFile, 'str', $s_RemoteFile, 'long', $l_Flags, 'long', $l_Context)
    If @error OR $ai_FTPPutFile[0] = 0 Then
    SetError(-1)
    Return 0
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Return $ai_FTPPutFile[0]

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==> _FTPPutFile()

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Function Name: _FTPDelFile()
    ; Description: Delete an file from an FTP server.
    ; Parameter(s): $l_FTPSession - The Long from _FTPConnect()
    ; $s_RemoteFile - The remote Location for the file.
    ; Requirement(s): DllCall, wininet.dll
    ; Return Value(s): On Success - 1
    ; On Failure - 0
    ; Author(s): Wouter van Kesteren
    ;
    ;===============================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _FTPDelFile($l_FTPSession, $s_RemoteFile)

    [/autoit] [autoit][/autoit] [autoit]

    Local $ai_FTPPutFile = DllCall('wininet.dll', 'int', 'FtpDeleteFile', 'long', $l_FTPSession, 'str', $s_RemoteFile)
    If @error OR $ai_FTPPutFile[0] = 0 Then
    SetError(-1)
    Return 0
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Return $ai_FTPPutFile[0]

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==> _FTPDelFile()

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Function Name: _FTPRenameFile()
    ; Description: Renames an file on an FTP server.
    ; Parameter(s): $l_FTPSession - The Long from _FTPConnect()
    ; $s_Existing - The old file name.
    ; $s_New - The new file name.
    ; Requirement(s): DllCall, wininet.dll
    ; Return Value(s): On Success - 1
    ; On Failure - 0
    ; Author(s): Wouter van Kesteren
    ;
    ;===============================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _FTPRenameFile($l_FTPSession, $s_Existing, $s_New)

    [/autoit] [autoit][/autoit] [autoit]

    Local $ai_FTPRenameFile = DllCall('wininet.dll', 'int', 'FtpRenameFile', 'long', $l_FTPSession, 'str', $s_Existing, 'str', $s_New)
    If @error OR $ai_FTPRenameFile[0] = 0 Then
    SetError(-1)
    Return 0
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Return $ai_FTPRenameFile[0]

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==> _FTPRenameFile()

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Function Name: _FTPMakeDir()
    ; Description: Makes an Directory on an FTP server.
    ; Parameter(s): $l_FTPSession - The Long from _FTPConnect()
    ; $s_Remote - The file name to be deleted.
    ; Requirement(s): DllCall, wininet.dll
    ; Return Value(s): On Success - 1
    ; On Failure - 0
    ; Author(s): Wouter van Kesteren
    ;
    ;===============================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _FTPMakeDir($l_FTPSession, $s_Remote)

    [/autoit] [autoit][/autoit] [autoit]

    Local $ai_FTPMakeDir = DllCall('wininet.dll', 'int', 'FtpCreateDirectory', 'long', $l_FTPSession, 'str', $s_Remote)
    If @error OR $ai_FTPMakeDir[0] = 0 Then
    SetError(-1)
    Return 0
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Return $ai_FTPMakeDir[0]

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==> _FTPMakeDir()

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Function Name: _FTPDelDir()
    ; Description: Delete's an Directory on an FTP server.
    ; Parameter(s): $l_FTPSession - The Long from _FTPConnect()
    ; $s_Remote - The Directory to be deleted.
    ; Requirement(s): DllCall, wininet.dll
    ; Return Value(s): On Success - 1
    ; On Failure - 0
    ; Author(s): Wouter van Kesteren
    ;
    ;===============================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _FTPDelDir($l_FTPSession, $s_Remote)

    [/autoit] [autoit][/autoit] [autoit]

    Local $ai_FTPDelDir = DllCall('wininet.dll', 'int', 'FtpRemoveDirectory', 'long', $l_FTPSession, 'str', $s_Remote)
    If @error OR $ai_FTPDelDir[0] = 0 Then
    SetError(-1)
    Return 0
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Return $ai_FTPDelDir[0]

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==> _FTPDelDir()

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Function Name: _FTPClose()
    ; Description: Closes the _FTPOpen session.
    ; Parameter(s): $l_InternetSession - The Long from _FTPOpen()
    ; Requirement(s): DllCall, wininet.dll
    ; Return Value(s): On Success - 1
    ; On Failure - 0
    ; Author(s): Wouter van Kesteren
    ;
    ;===============================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _FTPClose($l_InternetSession)

    [/autoit] [autoit][/autoit] [autoit]

    Local $ai_InternetCloseHandle = DllCall('wininet.dll', 'int', 'InternetCloseHandle', 'long', $l_InternetSession)
    If @error OR $ai_InternetCloseHandle[0] = 0 Then
    SetError(-1)
    Return 0
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Return $ai_InternetCloseHandle[0]

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==> _FTPClose()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;===================================================================================================

    [/autoit] [autoit][/autoit] [autoit]

    ;
    ; Function Name: _FTPPutFolderContents()
    ; Description: Puts an folder on an FTP server. Recursivley if selected
    ; Parameter(s): $l_InternetSession - The Long from _FTPConnect()
    ; $s_LocalFolder - The local folder i.e. "c:\temp".
    ; $s_RemoteFolder - The remote folder i.e. '/website/home'.
    ; $b_RecursivePut - Recurse through sub-dirs. 0=Non recursive, 1=Recursive
    ; Requirement(s): DllCall, wininet.dll
    ; Author(s): Stumpii
    ;
    ;===================================================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _FTPPutFolderContents($l_InternetSession, $s_LocalFolder, $s_RemoteFolder, $b_RecursivePut)

    [/autoit] [autoit][/autoit] [autoit]

    ; Shows the filenames of all files in the current directory.
    $search = FileFindFirstFile($s_LocalFolder & "\*.*")

    [/autoit] [autoit][/autoit] [autoit]

    ; Check if the search was successful
    If $search = -1 Then
    MsgBox(0, "Error", "No files/directories matched the search pattern")
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop
    If StringInStr(FileGetAttrib($s_LocalFolder & "\" & $file), "D") Then
    _FTPMakeDir($l_InternetSession, $s_RemoteFolder & "/" & $file)
    If $b_RecursivePut Then
    _FTPPutFolderContents($l_InternetSession, $s_LocalFolder & "\" & $file, $s_RemoteFolder & "/" & $file, $b_RecursivePut)
    EndIf
    Else
    _FTPPutFile($l_InternetSession, $s_LocalFolder & "\" & $file, $s_RemoteFolder & "/" & $file, 0, 0)
    EndIf
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    ; Close the search handle
    FileClose($search)

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_FTPPutFolderContents

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; define some constants - can be used with _FTPPutFile and _FTPGetFile and ftp open flags
    Const $INTERNET_FLAG_PASSIVE = 0x08000000
    Const $INTERNET_FLAG_TRANSFER_ASCII = 0x00000001
    Const $INTERNET_FLAG_TRANSFER_BINARY = 0x00000002
    Const $INTERNET_DEFAULT_FTP_PORT = 21
    Const $INTERNET_SERVICE_FTP = 1

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Function Name: _FTPCommand()
    ; Description: Sends a command to an FTP server.
    ; Parameter(s): $l_FTPSession - The Long from _FTPOpen()
    ; $s_FTPCommand - Commad string to send to FTP Server
    ; $l_ExpectResponse - Data socket for response in Async mode
    ; $s_Context - A pointer to a variable that contains an application-defined
    ; value used to identify the application context in callback operations
    ; $s_Handle - A pointer to a handle that is created if a valid data socket is opened.
    ; The $s_ExpectResponse parameter must be set to TRUE for phFtpCommand to be filled.
    ;
    ; Requirement(s): DllCall, wininet.dll
    ; Return Value(s): On Success - Returns an indentifier.
    ; On Failure - 0 and sets @ERROR
    ; Author(s): Bill Mezian
    ;
    ; Command Examples: depends on server syntax. The following is for
    ; Binary transfer, ASCII transfer, Passive transfer mode (used with firewalls)
    ; 'type I' 'type A' 'pasv'
    ;
    ;===============================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _FTPCommand($l_FTPSession, $s_FTPCommand, $l_Flags = 0x00000001, $l_ExpectResponse = 0, $l_Context = 0, $s_Handle = '')

    [/autoit] [autoit][/autoit] [autoit]

    Local $ai_FTPCommand = DllCall('wininet.dll', 'int', 'FtpCommand', 'long', $l_FTPSession, 'long', $l_ExpectResponse, 'long', $l_Flags, 'str', $s_FTPCommand, 'long', $l_Context, 'str', $s_Handle)
    If @error OR $ai_FTPCommand[0] = 0 Then
    SetError(-1)
    Return 0
    EndIf
    ;Return $s_return
    Return $ai_FTPCommand[0]

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc;==> _FTPCommand()

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Function Name: _FTPGetCurrentDir()
    ; Description: Get Current Directory on an FTP server.
    ; Parameter(s): $l_FTPSession - The Long from _FTPConnect()
    ; Requirement(s): DllCall, wininet.dll
    ; Return Value(s): On Success - Directory Name
    ; On Failure - 0
    ; Author(s): Beast
    ;
    ;===============================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _FTPGetCurrentDir($l_FTPSession)

    [/autoit] [autoit][/autoit] [autoit]

    Local $ai_FTPGetCurrentDir = DllCall('wininet.dll', 'int', 'FtpGetCurrentDirectory', 'long', $l_FTPSession, 'str', "", 'long_ptr', 260)
    If @error OR $ai_FTPGetCurrentDir[0] = 0 Then
    SetError(-1)
    Return 0
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Return $ai_FTPGetCurrentDir[2]

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    EndFunc;==> _FTPGetCurrentDir()

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Function Name: _FtpSetCurrentDir()
    ; Description: Set Current Directory on an FTP server.
    ; Parameter(s): $l_FTPSession - The Long from _FTPConnect()
    ; $s_Remote - The Directory to be set.
    ; Requirement(s): DllCall, wininet.dll
    ; Return Value(s): On Success - 1
    ; On Failure - 0
    ; Author(s): Beast
    ;
    ;===============================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _FtpSetCurrentDir($l_FTPSession, $s_Remote)

    [/autoit] [autoit][/autoit] [autoit]

    Local $ai_FTPSetCurrentDir = DllCall('wininet.dll', 'int', 'FtpSetCurrentDirectory', 'long', $l_FTPSession, 'str', $s_Remote)
    If @error OR $ai_FTPSetCurrentDir[0] = 0 Then
    SetError(-1)
    Return 0
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Return $ai_FTPSetCurrentDir[0]

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    EndFunc;==> _FtpSetCurrentDir()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Function Name: _FTPGetFileSize()
    ; Description: Gets filesize of a file on the FTP server.
    ; Parameter(s): $l_FTPSession - The Long from _FTPConnect()
    ; $s_FileName - The file name.
    ; Requirement(s): DllCall, wininet.dll
    ; Return Value(s): On Success - 1
    ; On Failure - 0
    ; Author(s): J.o.a.c.h.i.m. d.e. K.o.n.i.n.g.
    ;
    ;===============================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _FTPGetFileSize($l_FTPSession, $s_FileName)

    [/autoit] [autoit][/autoit] [autoit]

    Local $ai_FTPGetSizeHandle = DllCall('wininet.dll', 'int', 'FtpOpenFile', 'long', $l_FTPSession, 'str', $s_FileName, 'long', 0x80000000, 'long', 0x04000002, 'long', 0)
    Local $ai_FTPGetFileSize = DllCall('wininet.dll', 'int', 'FtpGetFileSize', 'long', $ai_FTPGetSizeHandle[0])
    If @error OR $ai_FTPGetFileSize[0] = 0 Then
    SetError(-1)
    Return 0
    EndIf
    DllCall('wininet.dll', 'int', 'InternetCloseHandle', 'str', $l_FTPSession)

    [/autoit] [autoit][/autoit] [autoit]

    Return $ai_FTPGetFileSize[0]

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==> _FTPGetFileSize()

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================

    [/autoit] [autoit][/autoit] [autoit]

    ;
    ; Function Name: _FTPFileFindFirst()
    ; Description: Find First File on an FTP server.
    ; Parameter(s): $l_FTPSession - The Long from _FTPConnect()
    ; $s_RemoteFile - The remote Location for the file.
    ; $l_Flags - use the dwFlags parameter to specify 1 for transferring the file in ASCII (Type A transfer method) or 2 for transferring the file in Binary (Type I transfer method).
    ; $l_Context - lContext is used to identify the application context when using callbacks. Since we’re not using callbacks we’ll pass 0.
    ; Requirement(s): DllCall, wininet.dll
    ; Return Value(s): On Success - 1
    ; On Failure - 0
    ; Author(s): Dick Bronsdijk
    ;
    ;===============================================================================

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #cs
    typedef struct _WIN32_FIND_DATA {
    DWORD dwFileAttributes;
    FILETIME ftCreationTime;
    FILETIME ftLastAccessTime;
    FILETIME ftLastWriteTime;
    DWORD nFileSizeHigh;
    DWORD nFileSizeLow;
    DWORD dwReserved0;
    DWORD dwReserved1;
    TCHAR cFileName[MAX_PATH];
    TCHAR cAlternateFileName[14];
    } WIN32_FIND_DATA;
    typedef struct _FILETIME {
    DWORD dwLowDateTime;
    DWORD dwHighDateTime;
    } FILETIME;
    #ce
    Func _FTPFileFindFirst($l_FTPSession, $s_RemoteFile, ByRef $h_Handle, ByRef $l_DllStruct, $l_Flags = 0, $l_Context = 0)

    [/autoit] [autoit][/autoit] [autoit]

    Local $str = "int;uint[2];uint[2];uint[2];int;int;int;int;char[256];char[14]"
    $l_DllStruct = DllStructCreate($str)
    if @error Then
    SetError(-2)
    Return ""
    endif

    [/autoit] [autoit][/autoit] [autoit]

    Dim $a_FTPFileList[1]
    $a_FTPFileList[0] = 0

    [/autoit] [autoit][/autoit] [autoit]

    Local $ai_FTPPutFile = DllCall('wininet.dll', 'int', 'FtpFindFirstFile', 'long', $l_FTPSession, 'str', $s_RemoteFile, 'ptr', DllStructGetPtr($l_DllStruct), 'long', $l_Flags, 'long', $l_Context)
    If @error OR $ai_FTPPutFile[0] = 0 Then
    SetError(-1)
    Return $a_FTPFileList
    EndIf
    $h_Handle = $ai_FTPPutFile[0]
    $FileName = DllStructGetData($l_DllStruct, 9)

    [/autoit] [autoit][/autoit] [autoit]

    Dim $a_FTPFileList[12]
    $a_FTPFileList[0] = 12
    $a_FTPFileList[1] = DllStructGetData($l_DllStruct, 1) ; File Attributes
    $a_FTPFileList[2] = DllStructGetData($l_DllStruct, 2, 1) ; Creation Time Low
    $a_FTPFileList[3] = DllStructGetData($l_DllStruct, 2, 2) ; Creation Time High
    $a_FTPFileList[4] = DllStructGetData($l_DllStruct, 3, 1) ; Access Time Low
    $a_FTPFileList[5] = DllStructGetData($l_DllStruct, 3, 2) ; Access Time High
    $a_FTPFileList[6] = DllStructGetData($l_DllStruct, 4, 1) ; Last Write Low
    $a_FTPFileList[7] = DllStructGetData($l_DllStruct, 4, 2) ; Last Write High
    $a_FTPFileList[8] = DllStructGetData($l_DllStruct, 5) ; File Size High
    $a_FTPFileList[9] = DllStructGetData($l_DllStruct, 6) ; File Size Low
    $a_FTPFileList[10] = DllStructGetData($l_DllStruct, 9); File Name
    $a_FTPFileList[11] = DllStructGetData($l_DllStruct, 10) ; Altername

    [/autoit] [autoit][/autoit] [autoit]

    Return $a_FTPFileList

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc;==> _FTPFileFindFirst()

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================

    [/autoit] [autoit][/autoit] [autoit]

    ;
    ; Function Name: _FTPFileFindNext()
    ; Description: Find Next File on an FTP server.
    ; Parameter(s): $l_FTPSession - The Long from _FTPConnect()
    ; $s_RemoteFile - The remote Location for the file.
    ; Requirement(s): DllCall, wininet.dll
    ; Return Value(s): On Success - 1
    ; On Failure - 0
    ; Author(s): Dick Bronsdijk
    ;
    ;===============================================================================

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _FTPFileFindNext($h_Handle, $l_DllStruct)

    [/autoit] [autoit][/autoit] [autoit]

    Dim $a_FTPFileList[1]
    $a_FTPFileList[0] = 0

    [/autoit] [autoit][/autoit] [autoit]

    Local $ai_FTPPutFile = DllCall('wininet.dll', 'int', 'InternetFindNextFile', 'long', $h_Handle, 'ptr', DllStructGetPtr($l_DllStruct))
    If @error OR $ai_FTPPutFile[0] = 0 Then
    SetError(-1)
    Return $a_FTPFileList
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Dim $a_FTPFileList[12]
    $a_FTPFileList[0] = 12
    $a_FTPFileList[1] = DllStructGetData($l_DllStruct, 1) ; File Attributes
    $a_FTPFileList[2] = DllStructGetData($l_DllStruct, 2, 1) ; Creation Time Low
    $a_FTPFileList[3] = DllStructGetData($l_DllStruct, 2, 2) ; Creation Time High
    $a_FTPFileList[4] = DllStructGetData($l_DllStruct, 3, 1) ; Access Time Low
    $a_FTPFileList[5] = DllStructGetData($l_DllStruct, 3, 2) ; Access Time High
    $a_FTPFileList[6] = DllStructGetData($l_DllStruct, 4, 1) ; Last Write Low
    $a_FTPFileList[7] = DllStructGetData($l_DllStruct, 4, 2) ; Last Write High
    $a_FTPFileList[8] = DllStructGetData($l_DllStruct, 5) ; File Size High
    $a_FTPFileList[9] = DllStructGetData($l_DllStruct, 6) ; File Size Low
    $a_FTPFileList[10] = DllStructGetData($l_DllStruct, 9); File Name
    $a_FTPFileList[11] = DllStructGetData($l_DllStruct, 10) ; Altername

    [/autoit] [autoit][/autoit] [autoit]

    Return $a_FTPFileList

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc;==> _FTPFileFindNext()

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================

    [/autoit] [autoit][/autoit] [autoit]

    ;
    ; Function Name: _FTPFileFindClose()
    ; Description: Delete FindFile Structure.
    ; Parameter(s):
    ; Requirement(s): DllCall, wininet.dll
    ; Return Value(s): On Success - 1
    ; On Failure - 0
    ; Author(s): Dick Bronsdijk
    ;
    ;===============================================================================

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _FTPFileFindClose($h_Handle, $l_DllStruct)

    [/autoit] [autoit][/autoit] [autoit]

    $l_DllStruct=0

    [/autoit] [autoit][/autoit] [autoit]

    Local $ai_FTPPutFile = DllCall('wininet.dll', 'int', 'InternetCloseHandle', 'long', $h_Handle)
    If @error OR $ai_FTPPutFile[0] = 0 Then
    SetError(-1)
    Return ""
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Return $ai_FTPPutFile[0]

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc;==> _FTPFileFindClose()

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Function Name: _FTPGetFile() - db Test
    ; Description: Gets an file from an FTP server.
    ; Parameter(s): $l_FTPSession - The Long from _FTPConnect()
    ; $s_RemoteFile - The remote Location for the file.
    ; $s_LocalFile - The local file.
    ; $l_Flags - use the dwFlags parameter to specify
    ; - 1 for transferring the file in ASCII (Type A transfer method) or
    ; - 2 for transferring the file in Binary (Type I transfer method).
    ; $l_Fail - Allow local file to be overwritten if it exists
    ; - -1 Don't allow overwrite (default)
    ; - 0 Allow overwrite
    ; $l_Attributes - Attributes for local file
    ; $l_Context - lContext is used to identify the application context when using callbacks. Since we’re not using callbacks we’ll pass 0.
    ; Requirement(s): DllCall, wininet.dll
    ; Return Value(s): On Success - 1
    ; On Failure - 0
    ; Author(s): Dick Bronsdijk
    ;
    ;===============================================================================

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _FTPGetFile($l_FTPSession, $s_RemoteFile, $s_LocalFile, $l_Flags = 2, $l_Fail = -1, $l_Attributes = 0, $l_Context = 0)

    [/autoit] [autoit][/autoit] [autoit]

    Local $ai_FTPGetFile = DllCall('wininet.dll', 'int', 'FtpGetFile', 'long', $l_FTPSession, 'str', $s_RemoteFile, 'str', $s_LocalFile, 'long', $l_Fail, 'long', $l_Attributes, 'long', $l_Flags, 'long', $l_Context)
    If @error OR $ai_FTPGetFile[0] = 0 Then
    SetError(-1)
    Return 0
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Return $ai_FTPGetFile[0]

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc;==> _FTPGetFile()

    [/autoit]


    PS: Bin ansich neuling in AutoIt muss soetwas für mein praktikum schreiben.

  • ungetestet:

    Spoiler anzeigen
    [autoit]

    #include <FTP.au3>
    $server = 'sever'
    $username = 'bn'
    $pass = 'pw'
    $Hand = _FTPOpen('Server')

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _FTPConnect($Hand, $server, $username, $pass)
    if @error then msgbox(0,"Error","Connect", 3)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _FTPMakeDir($Hand, 'Psychware')
    if @error then msgbox(0,"Error","MakeDir", 3)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _FtpPutFile($Hand, $Dateipfad & $Dateiname, '/Psychware/' & $dateiname)
    if @error then msgbox(0,"Error","PutFile 3", 3)

    [/autoit]


    mfg Buphx

  • okay werde es am Montag dann mal ausprobieren. Danke schon mal für die Hilfe


    Edit:

    kommen immer noch die Fehler.

    Für _FTPMakeDir und _FTPPutFile brauchst Du das Handle von _FTPConnect und nicht das Handle von _FTPOpen.

    Und das habe ich so verstanden:

    [autoit]

    #include <FTP.au3>
    $server = 'sever'
    $username = 'bn'
    $pass = 'pw'
    $Hand = _FTPOpen('Server')

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $HandC=_FTPConnect($Hand, $server, $username, $pass)
    if @error then msgbox(0,"Error","Connect", 3)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    _FTPMakeDir($HandC, 'Psychware')
    if @error then msgbox(0,"Error","MakeDir", 3)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    _FtpPutFile($HandC, $Dateipfad & $Dateiname, '/Psychware/')
    if @error then msgbox(0,"Error","PutFile 3", 3)

    [/autoit]

    kommen aber immer noch die gleichen Fehler

    5 Mal editiert, zuletzt von Snakey (17. Januar 2011 um 09:00)

    • Offizieller Beitrag

    Ich hab's mal korrigiert (Kommentare):

    Spoiler anzeigen
    [autoit]


    #include <FTP.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $server = 'server'
    $username = 'bn'
    $pass = 'pw'

    [/autoit] [autoit][/autoit] [autoit]

    $Dateipfad = @ScriptDir & '\'
    $Dateiname = '_test1.au3'

    [/autoit] [autoit][/autoit] [autoit]

    $hFTPOpen = _FTPOpen($server) ; <- Hier die Variable $Server

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $hFTPConnect=_FTPConnect($hFTPOpen, $server, $username, $pass)
    if @error then msgbox(0,"Error","Connect", 3)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _FTPMakeDir($hFTPConnect, 'Psychware') ; <- Hier kann ein Fehler auftreten, wenn das Verzeichnis bereits existiert
    if @error then msgbox(0,"Error","MakeDir", 3)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _FtpPutFile($hFTPConnect, $Dateipfad & $Dateiname, 'Psychware/' & $Dateiname) ; <- Der Remotepfad muss auch den Dateinamen enthalten
    if @error then msgbox(0,"Error","PutFile 3", 3)

    [/autoit] [autoit][/autoit] [autoit]

    _FTPClose($hFTPOpen) ; <- Close nicht vergessen

    [/autoit]
  • Warum eigentlich nicht die Standard UDF?

    [autoit]

    $sServer = "FTPSERVER"
    $sUsername = "FTPUSER"
    $sPass = "FTPPASSWORT"

    [/autoit][autoit][/autoit][autoit]

    $hOpen = _FTP_Open("ftpsession" & Random(0,100,0))
    $hConn = _FTP_Connect($hOpen, $sServer, $sUsername, $sPass,1)
    _FTP_DirCreate($hConn,"testordner")
    _FTP_DirSetCurrent($hConn, "testordner")
    _FTP_FilePut($hConn,"C:\test.txt","test.txt")
    _FTP_Close($hOpen)

    [/autoit]

    21 is only half the truth.