FTP-Problem

  • Hallo zusammen...

    Kann mir da mal bitte jemand aufs Pferd helfen?
    Ich versuche über ein Script eine Datei auf den Server zu legen... nur klappt das leider nicht... ?(

    Hier ist der Schnippel dazu:

    [autoit]


    Case $SendButton
    GUICtrlDelete($label_1)
    $dllhandle = DllOpen('wininet.dll')
    _DebugSetup( StringTrimRight(@ScriptName,4) &' example', True)
    $UploadFile = (@ScriptDir & "\gpw.ini")
    $Ftp_FileName = "\Downloads\gpw.ini"
    $server = 'ftp.*******.de'
    $username = '**********+'
    $pass = '**************'
    $Open = _FTP_Open('MyFTP Control')
    $Callback = _FTP_SetStatusCallback($Open, 'FTPStatusCallbackHandler')
    $Conn = _FTP_Connect($Open, $server, $username, $pass, 0, $INTERNET_DEFAULT_FTP_PORT, $INTERNET_SERVICE_FTP, 0, $Callback)
    Local $Ftpp = _FTP_FilePut('MyFTP Control', $UploadFile, $Ftp_FileName, $Callback)
    Local $Ftpc = _FTP_Close($Open)

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

    ;~
    ;~
    ;~

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

    Func FTPStatusCallbackHandler($hInternet, $dwContent, $dwInternetStatus, $lpvStatusInformation, $dwStatusInformationLength)
    If $dwInternetStatus = $INTERNET_STATUS_REQUEST_SENT Or $dwInternetStatus = $INTERNET_STATUS_RESPONSE_RECEIVED Then
    Local $Size, $iBytesRead
    $Size = DllStructCreate('dword')
    _WinAPI_ReadProcessMemory(_WinAPI_GetCurrentProcess(), $lpvStatusInformation, DllStructGetPtr($Size), $dwStatusInformationLength, $iBytesRead)
    _DebugOut(_FTP_DecodeInternetStatus($dwInternetStatus) & ' | Size = ' & DllStructGetData($Size, 1) & ' Bytes Bytes read = ' & $iBytesRead )
    Else
    _DebugOut(_FTP_DecodeInternetStatus($dwInternetStatus) )
    EndIf
    EndFunc ;==>_InternetStatusCallback

    [/autoit]

    Hier dann das Fenster vom CallbackHandler:

    autoit.de/wcf/attachment/9211/

  • kein Problem, wenn es weiterhilft... ;)

    [autoit]


    ;====================================================
    ;============= Encryption Tool With GUI =============
    ;====================================================
    ; AutoIt version: 3.0.103
    ; Language: Deutsch
    ; Author: Pitter (c) by Idea an script from @wolfferness
    ;
    ; ----------------------------------------------------------------------------
    ; Script Start
    ; ----------------------------------------------------------------------------
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>
    #include <Constants.au3>
    #include <IE.au3>
    #include <File.au3>
    #include <Array.au3>
    #include <GuiButton.au3>
    #include <GUIConstants.au3>
    #include <String.au3>
    #Include <FTPEx.au3>
    #include <Debug.au3>
    #RequireAdmin
    ;~Opt('MustDeclareVars', 1)

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

    _Main()

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

    Func _Main()
    Local $WinMain, $EditText, $InputLevel, $InputPass, $UpDownLevel, $sfile, $SendButton, $label_1, $server
    Local $EncryptButton, $DecryptButton, $ReadButton, $string, $string1, $string2, $file, $chars, $chars1, $chars2, $inifile, $inifile2
    Local $Open, $Conn, $username, $pass, $Ftpc, $l_Flags, $l_Context
    #forceref $UpDownLevel

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

    $WinMain = GUICreate('Encryption tool', 400, 500)
    $EditText = GUICtrlCreateEdit('', 5, 5, 380, 350)

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

    $InputPass = 'test'
    $InputLevel = '2'

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

    $ReadButton = GUICtrlCreateButton('Einlesen', 10, 400, 105, 35)
    $EncryptButton = GUICtrlCreateButton('Verschlüsseln', 150, 400, 105, 35)
    $DecryptButton = GUICtrlCreateButton('Entschlüsseln', 285, 400, 105, 35)
    $SendButton = GUICtrlCreateButton('Veröffentlichen', 150, 460, 105, 35)
    GUISetState()

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $ReadButton
    If FileExists(@ScriptDir & "\GPW.ini") Then
    FileCopy(@ScriptDir & "\GPW.ini", @ScriptDir & "\GPW_1.ini", 1)
    $file = FileOpen(@ScriptDir & "\GPW_1.ini", 0)
    $chars = FileRead($file)
    GUICtrlSetData($EditText, $chars)
    FileClose($file)
    GUISetState(@SW_ENABLE, $WinMain)
    EndIf
    $label_1 = GUICtrlCreateLabel("INI-Datei eingelesen", 20, 360, 360, 24, BitOR($SS_CENTER, $SS_CENTERIMAGE))

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

    Case $EncryptButton
    GUISetState(@SW_DISABLE, $WinMain)
    $string1 = GUICtrlRead($EditText)
    if $string1 = "" Then
    GUICtrlDelete($label_1)
    $label_1 = GUICtrlCreateLabel("BITTE ERST DIE INI EINLESEN!", 20, 360, 360, 24, BitOR($SS_CENTER, $SS_CENTERIMAGE))
    ExitLoop
    Else
    GUICtrlSetData($EditText, 'Bitte warten, INI wird verschlüsselt!')
    GUICtrlSetData($EditText, _StringEncrypt(1, $string1, $InputPass, $InputLevel))
    $chars1 = GUICtrlRead($EditText)
    $inifile = FileOpen (@ScriptDir & "\gpw.ini", 2)
    FileWrite($inifile, $chars1)
    FileClose($inifile)
    GUICtrlSetData($EditText, $chars1)
    GUISetState(@SW_ENABLE, $WinMain)
    EndIf

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

    Case $DecryptButton
    GUISetState(@SW_DISABLE, $WinMain)
    $string2 = GUICtrlRead($EditText)
    GUICtrlSetData($EditText, 'Bitte warten, INI wird entschlüsselt!')
    GUICtrlSetData($EditText, _StringEncrypt(0, $string2, $InputPass, $InputLevel))
    $chars2 = GUICtrlRead($EditText)
    $inifile2 = FileOpen (@ScriptDir & '\gpw.ini', 2)
    FileWrite($inifile2, $chars2)
    FileClose($inifile2)
    GUISetState(@SW_ENABLE, $WinMain)

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

    Case $SendButton
    GUICtrlDelete($label_1)
    $dllhandle = DllOpen('wininet.dll')
    _DebugSetup( StringTrimRight(@ScriptName,4) &' example', True)
    $UploadFile = (@ScriptDir & "\gpw.ini")
    $Ftp_FileName = "\Downloads\gpw.ini"
    $server = '**********' ;~ FTP-Server-Adresse einfügen
    $username = '*************' ;~ Usernamen einfügen
    $pass = '**************' ;~ Passwort einfügen
    $Open = _FTP_Open('MyFTP Control')
    $Callback = _FTP_SetStatusCallback($Open, 'FTPStatusCallbackHandler')
    $Conn = _FTP_Connect($Open, $server, $username, $pass, 0, $INTERNET_DEFAULT_FTP_PORT, $INTERNET_SERVICE_FTP, 0, $Callback)
    Local $Ftpp = _FTP_FilePut('MyFTP Control', $UploadFile, $Ftp_FileName, $Callback)
    Local $Ftpc = _FTP_Close($Open)

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

    EndSwitch
    WEnd
    EndFunc ;==>_Main

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

    Func FTPStatusCallbackHandler($hInternet, $dwContent, $dwInternetStatus, $lpvStatusInformation, $dwStatusInformationLength)
    If $dwInternetStatus = $INTERNET_STATUS_REQUEST_SENT Or $dwInternetStatus = $INTERNET_STATUS_RESPONSE_RECEIVED Then
    Local $Size, $iBytesRead
    $Size = DllStructCreate('dword')
    _WinAPI_ReadProcessMemory(_WinAPI_GetCurrentProcess(), $lpvStatusInformation, DllStructGetPtr($Size), $dwStatusInformationLength, $iBytesRead)
    _DebugOut(_FTP_DecodeInternetStatus($dwInternetStatus) & ' | Size = ' & DllStructGetData($Size, 1) & ' Bytes Bytes read = ' & $iBytesRead )
    Else
    _DebugOut(_FTP_DecodeInternetStatus($dwInternetStatus) )
    EndIf
    EndFunc ;==>_InternetStatusCallback

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

    Gruß
    Pitter

  • ins fileput() kommt als erster parameter $conn....
    aber teste mal folgendes:
    immer erst GEHEN üben, bevor man RENNEN will

    [autoit]

    #include <FTPEx.au3>
    #include <Array.au3>
    $server=""
    $username=""
    $pass=""

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

    filewrite("testxxx.ftp","test")

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

    $Open = _FTP_Open('MyFTP Control')
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $Open = ' & $Open & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

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

    $Conn = _FTP_Connect($Open, $server, $username, $pass)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $Conn = ' & $Conn & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

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

    Local $Ftpp = _FTP_FilePut($conn, "testxxx.ftp", "testxxx.ftp",$INTERNET_FLAG_TRANSFER_ASCII)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $Ftpp = ' & $Ftpp & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

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

    $list=_Ftp_ListToArray($conn)
    _arraydisplay($list)

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

    Local $Ftpc = _FTP_Close($Open)
    ;filedelete("testxxx.ftp")

    [/autoit]

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    Einmal editiert, zuletzt von Andy (28. April 2010 um 14:33)

  • Jep Andy, das funktioniert so weit. Das Array poppt auf und ich kann ein/mehrere Dateien auswählen zum kopieren.
    auf Send geklickt un die files sind oben.

    Jetzt müsste ich das nur noch für mich umstricken, damit mir das meine INI kopiert. Dann bin ich auch schon fast fertig damit.

    Nur noch meine Version.txt einlesen, die 2. Zeile um den Wert 1 erhöhen und auch noch hochschieben.... aber das kann in einem Rutsch erfolgen.

    Gruß
    Pitter