dozr Posted February 21, 2009 Share Posted February 21, 2009 Hiya. I'm fairly new to autoit and I need some help reguarding a FTP upload script. I've been looking around for ages everywhere, diden't find anything helpful, so I decided to ask here. How can I make a script that uploads images from my computer to my FTP server? I've started abit here, dosent work though: #include <FTP.au3> $server = "ftp.myserver.com" $username = "myusername" $pass = "mypass" $dir = "/upload/" $Open = _FTPOpen('MyFTP Control') $Conn = _FTPConnect($Open, $server, $username, $pass) upload() func upload() $file=FileOpenDialog("Upload file", @ComputerName & "\", "Images (*.jpg;*.bmp;*.png,*.gif)", 1 + 4 ) $msgfile=FileGetShortName($file) $Ftpp = _FtpPutFile($Conn, $file, $dir&$file) $Ftpc = _FTPClose($Open) If $file="" Then Exit Else MsgBox(0,"Success",$msgfile & " has been uploaded.") EndIf EndFunc Link to comment Share on other sites More sharing options...
dozr Posted February 21, 2009 Author Share Posted February 21, 2009 Anyone? Link to comment Share on other sites More sharing options...
jvanegmond Posted February 21, 2009 Share Posted February 21, 2009 (edited) Here is an example which uploads all images from a folder via FTP. All the comments are Dutch and it doesn't rely on any non-standard includes, since I wrote this for a friend. expandcollapse popup#Include <File.au3> ; === Opties === ; Optie variabele waarin staat in welke directories je gaat zoeken. ; Voer geen directories in zoals C:\123\ EN C:\123\456, gebruik dan alleen C:\123\ Local $opt_SearchDir[1] = ["C:\Documents and Settings\Jos\My Documents\] ; <== Invullen ; Optie voor file extensions. Local $opt_FileExtensions = "*.jpg; *.jpeg; *.png; *.bmp; *.gif" ; FTP opties Local $opt_FTP_Server = "ftp.wut.nl" ; <== Invullen Local $opt_FTP_Username = "" ; <== Invullen Local $opt_FTP_Password = "" ; <== Invullen Local $opt_FTP_Directory = "/" ; Moet met / gedaan. Moet een / aan het begin en aan het eind. Voorbeeld: /public_html/images/ ; ======================= ; === Hoofd programma === ;If ( Not @Compiled ) Then ; MsgBox(0, "", "This script needs to be compiled.") ; Exit ;EndIf RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "UploadImageToFTP", "REG_SZ", @ScriptFullPath) ;RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "UploadImageToFTP") Global $hFtp _Connect() For $i = 0 to UBound($opt_SearchDir)-1 $lFile = _FileListToArrayEx($opt_SearchDir[$i],$opt_FileExtensions,True) For $n = 1 To UBound($lFile)-1 _FTPUpload($lFile[$n]) Next Next _Close() Exit Func _Connect() $hFtp = _FTPOpen("ManadarX") _FTPConnect($hFtp, $opt_FTP_Server, $opt_FTP_Username, $opt_FTP_Password, 21, 1, 0x08000000) If @error Then MsgBox(0,"UploadToFTP", "Er kan geen verbinding worden gemaakt met de server. ") Exit EndIf _FTPMakeDir($hFtp, $opt_FTP_Directory) _FtpSetCurrentDir($hFtp, $opt_FTP_Directory) EndFunc Func _FTPUpload($pFile) Local $aDrive, $aDir, $aFile, $aExt ConsoleWrite("Uploading file " & $pFile & @CRLF) _PathSplit($pFile,$aDrive,$aDir,$aFile,$aExt) _FTPPutFile($hFtp, $pFile, $opt_FTP_Directory & $aFile & $aExt, 2) ;; <== Werkt dus niet EndFunc Func _Close() _FTPClose($hFtp) EndFunc ; Utility functions Func _FileListToArrayEx($sPath, $sFilter = '*.*', $iRecurse = False) If Not FileExists($sPath) Then Return SetError(1, 1, '') If $sFilter = -1 Or $sFilter = Default Then $sFilter = '*.*' ;If $sExclude = -1 Or $sExclude = Default Then $sExclude = '' ;Local $aBadChar[6] = ['\', '/', ':', '>', '<', '|'] $sFilter = StringRegExpReplace($sFilter, '\s*;\s*', ';') If StringRight($sPath, 1) <> '\' Then $sPath &= '\' ;For $iCC = 0 To 5 ; If StringInStr($sFilter, $aBadChar[$iCC]) Or _ ; StringInStr($sExclude, $aBadChar[$iCC]) Then Return SetError(2, 2, '') ;Next If StringStripWS($sFilter, 8) = '' Then Return SetError(2, 2, '') Local $oFSO = ObjCreate("Scripting.FileSystemObject"), $sTFolder $sTFolder = $oFSO.GetSpecialFolder(2) Local $hOutFile = @TempDir & $oFSO.GetTempName If Not StringInStr($sFilter, ';') Then $sFilter &= ';' Local $aSplit = StringSplit(StringStripWS($sFilter, 8), ';'), $sRead, $sHoldSplit For $iCC = 1 To $aSplit[0] If StringStripWS($aSplit[$iCC],8) = '' Then ContinueLoop If StringLeft($aSplit[$iCC], 1) = '.' And _ UBound(StringSplit($aSplit[$iCC], '.')) - 2 = 1 Then $aSplit[$iCC] = '*' & $aSplit[$iCC] $sHoldSplit &= '"' & $sPath & $aSplit[$iCC] & '" ' Next $sHoldSplit = StringTrimRight($sHoldSplit, 1) If $iRecurse Then RunWait(@Comspec & ' /c dir /b /s /a ' & $sHoldSplit & ' > "' & $hOutFile & '"', '', @SW_HIDE) Else RunWait(@ComSpec & ' /c dir /b /a ' & $sHoldSplit & ' /o-e /od > "' & $hOutFile & '"', '', @SW_HIDE) EndIf $sRead &= FileRead($hOutFile) If Not FileExists($hOutFile) Then Return SetError(4, 4, '') FileDelete($hOutFile) If StringStripWS($sRead, 8) = '' Then SetError(4, 4, '') Local $aFSplit = StringSplit(StringTrimRight(StringStripCR($sRead), 1), @LF) Local $sHold For $iCC = 1 To $aFSplit[0] ;If $sExclude And StringLeft($aFSplit[$iCC], StringLen(StringReplace($sExclude, '*', ''))) = StringReplace($sExclude, '*', '') Then ContinueLoop If StringInStr(FileGetAttrib($sPath & '\' & $aFSplit[$iCC]), 'd') = 0 And _ StringInStr(FileGetAttrib($aFSplit[$iCC]), 'd') = 0 Then If StringRegExp($aFSplit[$iCC], '\w:\\') = 0 Then $sHold &= $sPath & $aFSplit[$iCC] & Chr(1) Else $sHold &= $aFSplit[$iCC] & Chr(1) EndIf EndIf Next If StringTrimRight($sHold, 1) Then Return StringSplit(StringTrimRight($sHold, 1), Chr(1)) Return SetError(4, 4, '') EndFunc ;FTP UDF, Updated By JohnMC On Sept 10th 2008 ; ;A Map Of The Handle Array: ;[0] ;[1]= wininet.dll handle ;[2]= InternetOpen handle ;[3]= InternetConnect handle ;[4]= FTPFileFindFirst dll struct handle ;[5]= FtpFindFirstFile handle ; ;=============================================================================== ; ; 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): wininet.dll ; Return Value(s): On Success - Returns an indentifier. ; On Failure - 0 and sets @ERROR ; Author(s): Wouter van Kesteren. ; ;=============================================================================== Func _FTPOpen($s_Agent, $l_AccessType = 1, $s_ProxyName = '', $s_ProxyBypass = '', $l_Flags = 0) local $handles[6] $handles[1]=DllOpen("wininet.dll") Local $ai_InternetOpen = DllCall($handles[1], '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 $handles[2]=$ai_InternetOpen[0] Return $handles EndFunc ;==> _FTPOpen() ;=============================================================================== ; ; Function Name: _FTPConnect() ; Description: Connects to an FTP server. ; Parameter(s): $l_InternetSession - Array 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): wininet.dll ; Return Value(s): On Success - 1. ; On Failure - 0 and sets @ERROR ; Author(s): Wouter van Kesteren ; ;=============================================================================== Func _FTPConnect(ByRef $l_InternetSession, $s_ServerName, $s_Username, $s_Password, $i_ServerPort = 21, $l_Service = 1, $l_Flags = 0, $l_Context = 0) Local $ai_InternetConnect = DllCall($l_InternetSession[1], 'long', 'InternetConnect', 'long', $l_InternetSession[2], '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 $l_InternetSession[3]=$ai_InternetConnect[0] Return 1 EndFunc ;==> _FTPConnect() ;=============================================================================== ; ; Function Name: _FTPPutFile() ; Description: Puts an file on an FTP server. ; Parameter(s): $l_FTPSession - Array from _FTPOpen() ; $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 ; ;=============================================================================== Func _FTPPutFile(ByRef $l_FTPSession, $s_LocalFile, $s_RemoteFile, $l_Flags = 0, $l_Context = 0) Local $ai_FTPPutFile = DllCall($l_FTPSession[1], 'int', 'FtpPutFile', 'long', $l_FTPSession[3], '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 Return $ai_FTPPutFile[0] EndFunc ;==> _FTPPutFile() ;=================================================================================================== ; ; Function Name: _FTPPutFolderContents() ; Description: Puts an folder on an FTP server. Recursivley if selected ; Parameter(s): $l_FTPSession - Array from _FTPOpen() ; $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): wininet.dll ; Author(s): Stumpii ; ;=================================================================================================== Func _FTPPutFolderContents(ByRef $l_FTPSession, $s_LocalFolder, $s_RemoteFolder, $b_RecursivePut) ; Shows the filenames of all files in the current directory. local $search = FileFindFirstFile($s_LocalFolder & "\*.*") ; Check if the search was successful If $search = -1 Then MsgBox(0, "Error", "No files/directories matched the search pattern") Exit EndIf While 1 local $file = FileFindNextFile($search) If @error Then ExitLoop If StringInStr(FileGetAttrib($s_LocalFolder & "\" & $file), "D") Then _FTPMakeDir($l_FTPSession, $s_RemoteFolder & "/" & $file) If $b_RecursivePut Then _FTPPutFolderContents($l_FTPSession, $s_LocalFolder & "\" & $file, $s_RemoteFolder & "/" & $file, $b_RecursivePut) EndIf Else _FTPPutFile($l_FTPSession, $s_LocalFolder & "\" & $file, $s_RemoteFolder & "/" & $file, 0, 0) EndIf WEnd ; Close the search handle FileClose($search) EndFunc ;==>_FTPPutFolderContents ;=============================================================================== ; ; Function Name: _FTPGetFoldercontents ; Description: Recursively retrieves the contents of a directory on an FTP server. ; Parameter(s): $l_FTPSession - Array from _FTPOpen() ; $s_RemoteDir - The directory on the server to retrieve. (Needs trailing forwardslash) ; $s_LocalDir - The Local directory to save to. (Needs trailing backslash) ; $b_RecursiveGet - Recurse through sub-dirs. 0=Non recursive (top dir only), 1=Recursive (note that this is not tru recursion) ; $s_searchfor - (UNTESTED OTHER THEN DEFAULT) What to download, must be set to default * to download subfolders currently ; Requirement(s): wininet.dll ; Return Value(s): On Success - 1 ; On Failure - 0 ; Author(s): JohnMC ; ;=============================================================================== Func _FTPGetFolderContents(ByRef $l_FTPSession, $s_RemoteDir, $s_LocalDir, $b_RecursiveGet=1, $s_searchfor="*") local $folderlist[1] Local $i=0 While $i < UBound($folderlist) Local $subpath=$folderlist[$i] _FtpSetCurrentDir($l_FTPSession,"/" & $s_RemoteDir & $subpath) local $FileInfo = _FtpFileFindFirst ($l_FTPSession,$s_searchfor) while $FileInfo[0]<>0 if $FileInfo[1]=16 and $FileInfo[10] <> "." and $FileInfo[10] <> ".." And $b_RecursiveGet<>0 Then Local $iUBound = UBound($folderlist) ReDim $folderlist[$iUBound + 1] $folderlist[$iUBound] = "/" & $subpath & $FileInfo[10] & "/" elseif $FileInfo[1]=128 then $downloadto = $s_LocalDir & stringReplace ($subpath,"/","\") If Not FileExists($downloadto) then DirCreate($downloadto) _FTPGetFile($l_FTPSession,$FileInfo[10],$downloadto&$FileInfo[10]) endif $FileInfo = _FtpFileFindNext($l_FTPSession) wend _FTPFileFindClose($l_FTPSession) $i+=1 WEnd EndFunc ;==>_FTPGetFolderContents ;=============================================================================== ; ; Function Name: _FTPGetFile() ; Description: Puts an file on an FTP server. ; Parameter(s): $l_FTPSession - Array from _FTPOpen() ; $s_RemoteFile - The remote file. ; $s_LocalFile - The Local Location to download to. ; $l_FailEx - If File Exists Localy 1=Fail 0=Proceed (Default) ;Fail Caused Crash For Me On My Vista Machine, changed default -JohnMC ; $l_FlagsA - Special flags & Attributes. -JohnMC ; $l_Flags - Special flags. ; $l_Context - I dont got a clue what this does. ; Requirement(s): wininet.dll ; Return Value(s): On Success - 1 ; On Failure - 0 ; Author(s): Dick Bronsdijk ; Updated By JohnMC To Add $l_FailEx and $l_FlagsA ; ;=============================================================================== Func _FTPGetFile(ByRef $l_FTPSession, $s_RemoteFile, $s_LocalFile, $l_FailEx = 0, $l_FlagsA = 0, $l_Flags = 0, $l_Context = 0) Local $ai_FTPGetFile = DllCall($l_FTPSession[1], 'int', 'FtpGetFile', 'long', $l_FTPSession[3], 'str', $s_RemoteFile, 'str', $s_LocalFile, 'long', $l_FailEx, 'long', $l_FlagsA, 'long', $l_Flags, 'long', $l_Context) If @error OR $ai_FTPGetFile[0] = 0 Then SetError(-1) Return 0 EndIf Return $ai_FTPGetFile[0] EndFunc;==> _FTPPutFile() ;=============================================================================== ; ; Function Name: _FTPDelFile() ; Description: Delete an file from an FTP server. ; Parameter(s): $l_FTPSession - Array from _FTPOpen() ; $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 ; ;=============================================================================== Func _FTPDelFile(ByRef $l_FTPSession, $s_RemoteFile) Local $ai_FTPPutFile = DllCall($l_FTPSession[1], 'int', 'FtpDeleteFile', 'long', $l_FTPSession[3], 'str', $s_RemoteFile) If @error OR $ai_FTPPutFile[0] = 0 Then SetError(-1) Return 0 EndIf Return $ai_FTPPutFile[0] EndFunc ;==> _FTPDelFile() ;=============================================================================== ; ; Function Name: _FTPRenameFile() ; Description: Renames an file on an FTP server. ; Parameter(s): $l_FTPSession - Array from _FTPOpen() ; $s_Existing - The old file name. ; $s_New - The new file name. ; Requirement(s): wininet.dll ; Return Value(s): On Success - 1 ; On Failure - 0 ; Author(s): Wouter van Kesteren ; ;=============================================================================== Func _FTPRenameFile(ByRef $l_FTPSession, $s_Existing, $s_New) Local $ai_FTPRenameFile = DllCall($l_FTPSession[1], 'int', 'FtpRenameFile', 'long', $l_FTPSession[3], 'str', $s_Existing, 'str', $s_New) If @error OR $ai_FTPRenameFile[0] = 0 Then SetError(-1) Return 0 EndIf Return $ai_FTPRenameFile[0] EndFunc ;==> _FTPRenameFile() ;=============================================================================== ; ; Function Name: _FTPMakeDir() ; Description: Makes an Directory on an FTP server. ; Parameter(s): $l_FTPSession - Array from _FTPOpen() ; $s_Remote - The file name to be deleted. ; Requirement(s): wininet.dll ; Return Value(s): On Success - 1 ; On Failure - 0 ; Author(s): Wouter van Kesteren ; ;=============================================================================== Func _FTPMakeDir(ByRef $l_FTPSession, $s_Remote) Local $ai_FTPMakeDir = DllCall($l_FTPSession[1], 'int', 'FtpCreateDirectory', 'long', $l_FTPSession[3], 'str', $s_Remote) If @error OR $ai_FTPMakeDir[0] = 0 Then SetError(-1) Return 0 EndIf Return $ai_FTPMakeDir[0] EndFunc ;==> _FTPMakeDir() ;=============================================================================== ; ; Function Name: _FTPDelDir() ; Description: Delete's an Directory on an FTP server. ; Parameter(s): $l_FTPSession - Array from _FTPOpen() ; $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 ; ;=============================================================================== Func _FTPDelDir(ByRef $l_FTPSession, $s_Remote) Local $ai_FTPDelDir = DllCall($l_FTPSession[1], 'int', 'FtpRemoveDirectory', 'long', $l_FTPSession[3], 'str', $s_Remote) If @error OR $ai_FTPDelDir[0] = 0 Then SetError(-1) Return 0 EndIf Return $ai_FTPDelDir[0] EndFunc ;==> _FTPDelDir() ;=============================================================================== ; ; Function Name: _FTPGetFileSize() ; Description: Gets the file size of a remote file ; Parameter(s): $l_FTPSession - Array from _FTPOpen() ; $s_FileName - Remote file ; Requirement(s): 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. ; ;=============================================================================== Func _FTPGetFileSize(ByRef $l_FTPSession, $s_FileName) Local $ai_FTPGetSizeHandle = DllCall($l_FTPSession[1], 'int', 'FtpOpenFile', 'long', $l_FTPSession[3], 'str', $s_FileName, 'long', 0x80000000, 'long', 0x04000002, 'long', 0) Local $ai_FTPGetFileSize = DllCall($l_FTPSession[1], 'int', 'FtpGetFileSize', 'long', $ai_FTPGetSizeHandle[0]) If @error OR $ai_FTPGetFileSize[0] = 0 Then SetError(-1) Return 0 EndIf DllCall($l_FTPSession[1], 'int', 'InternetCloseHandle', 'str', $ai_FTPGetSizeHandle[0]) Return $ai_FTPGetFileSize[0] EndFunc ;==> _FTPGetFileSize() ;=============================================================================== ; ; Function Name: _FTPGetCurrentDir() ; Description: Get Current Directory on an FTP server. ; Parameter(s): $l_FTPSession - Array from _FTPOpen() ; Requirement(s): wininet.dll ; Return Value(s): On Success - Directory Name ; On Failure - 0 ; Author(s): Beast ; ;=============================================================================== Func _FTPGetCurrentDir(ByRef $l_FTPSession) Local $ai_FTPGetCurrentDir = DllCall($l_FTPSession[1], 'int', 'FtpGetCurrentDirectory', 'long', $l_FTPSession[3], 'str', "", 'long_ptr', 260) If @error OR $ai_FTPGetCurrentDir[0] = 0 Then SetError(-1) Return 0 EndIf Return $ai_FTPGetCurrentDir[2] EndFunc;==> _FTPGetCurrentDir() ;=============================================================================== ; ; Function Name: _FtpSetCurrentDir() ; Description: Set Current Directory on an FTP server. ; Parameter(s): $l_FTPSession - Array from _FTPOpen() ; $s_Remote - The Directory to be set. ; Requirement(s): wininet.dll ; Return Value(s): On Success - 1 ; On Failure - 0 ; Author(s): Beast ; ;=============================================================================== Func _FtpSetCurrentDir(ByRef $l_FTPSession, $s_Remote) Local $ai_FTPSetCurrentDir = DllCall($l_FTPSession[1], 'int', 'FtpSetCurrentDirectory', 'long', $l_FTPSession[3], 'str', $s_Remote) If @error OR $ai_FTPSetCurrentDir[0] = 0 Then SetError(-1) Return 0 EndIf Return $ai_FTPSetCurrentDir[0] EndFunc;==> _FtpSetCurrentDir() ;=============================================================================== ; ; Function Name: _FTPFileFindFirst() ; Description: Find First File on an FTP server. ; Parameter(s): $l_FTPSession - Array from _FTPOpen() ; $s_RemoteFile - The remote file to find ; Requirement(s): wininet.dll ; Return Value(s): On Success - 1 ; On Failure - 0 ; Author(s): Dick Bronsdijk ; ;=============================================================================== Func _FTPFileFindFirst(ByRef $l_FTPSession, $s_RemoteFile, $l_Flags = 0, $l_Context = 0) $l_FTPSession[4]=DllStructCreate("int;uint[2];uint[2];uint[2];int;int;int;int;char[256];char[14]") if @error Then SetError(-2) Return "" endif Dim $a_FTPFileList[1] $a_FTPFileList[0] = 0 Local $ai_FTPPutFile = DllCall($l_FTPSession[1], 'int', 'FtpFindFirstFile', 'long', $l_FTPSession[3], 'str', $s_RemoteFile, 'ptr', DllStructGetPtr($l_FTPSession[4]), 'long', $l_Flags, 'long', $l_Context) If @error OR $ai_FTPPutFile[0] = 0 Then SetError(-1) Return $a_FTPFileList EndIf $l_FTPSession[5] = $ai_FTPPutFile[0] $FileName = DllStructGetData($l_FTPSession[4], 9) Dim $a_FTPFileList[12] $a_FTPFileList[0] = 12 $a_FTPFileList[1] = DllStructGetData($l_FTPSession[4], 1) ; File Attributes $a_FTPFileList[2] = DllStructGetData($l_FTPSession[4], 2, 1) ; Creation Time Low $a_FTPFileList[3] = DllStructGetData($l_FTPSession[4], 2, 2) ; Creation Time High $a_FTPFileList[4] = DllStructGetData($l_FTPSession[4], 3, 1) ; Access Time Low $a_FTPFileList[5] = DllStructGetData($l_FTPSession[4], 3, 2) ; Access Time High $a_FTPFileList[6] = DllStructGetData($l_FTPSession[4], 4, 1) ; Last Write Low $a_FTPFileList[7] = DllStructGetData($l_FTPSession[4], 4, 2) ; Last Write High $a_FTPFileList[8] = DllStructGetData($l_FTPSession[4], 5) ; File Size High $a_FTPFileList[9] = DllStructGetData($l_FTPSession[4], 6) ; File Size Low $a_FTPFileList[10] = DllStructGetData($l_FTPSession[4], 9) ; File Name $a_FTPFileList[11] = DllStructGetData($l_FTPSession[4], 10) ; Altername Return $a_FTPFileList EndFunc;==> _FTPFileFindFirst() ;=============================================================================== ; ; Function Name: _FTPFileFindNext() ; Description: Find Next File on an FTP server. ; Parameter(s): $l_FTPSession - Array from _FTPOpen() ; $l_DllStruct - ; Requirement(s): wininet.dll ; Return Value(s): On Success - 1 ; On Failure - 0 ; Author(s): Dick Bronsdijk ; ;=============================================================================== Func _FTPFileFindNext(ByRef $l_FTPSession) Dim $a_FTPFileList[1] $a_FTPFileList[0] = 0 Local $ai_FTPPutFile = DllCall($l_FTPSession[1], 'int', 'InternetFindNextFile', 'long',$l_FTPSession[5], 'ptr', DllStructGetPtr($l_FTPSession[4])) If @error OR $ai_FTPPutFile[0] = 0 Then SetError(-1) Return $a_FTPFileList EndIf Dim $a_FTPFileList[12] $a_FTPFileList[0] = 12 $a_FTPFileList[1] = DllStructGetData($l_FTPSession[4], 1) ; File Attributes $a_FTPFileList[2] = DllStructGetData($l_FTPSession[4], 2, 1) ; Creation Time Low $a_FTPFileList[3] = DllStructGetData($l_FTPSession[4], 2, 2) ; Creation Time High $a_FTPFileList[4] = DllStructGetData($l_FTPSession[4], 3, 1) ; Access Time Low $a_FTPFileList[5] = DllStructGetData($l_FTPSession[4], 3, 2) ; Access Time High $a_FTPFileList[6] = DllStructGetData($l_FTPSession[4], 4, 1) ; Last Write Low $a_FTPFileList[7] = DllStructGetData($l_FTPSession[4], 4, 2) ; Last Write High $a_FTPFileList[8] = DllStructGetData($l_FTPSession[4], 5) ; File Size High $a_FTPFileList[9] = DllStructGetData($l_FTPSession[4], 6) ; File Size Low $a_FTPFileList[10] = DllStructGetData($l_FTPSession[4], 9) ; File Name $a_FTPFileList[11] = DllStructGetData($l_FTPSession[4], 10) ; Altername Return $a_FTPFileList EndFunc;==> _FTPFileFindNext() ;=============================================================================== ; ; Function Name: _FTPFileFindClose() ; Description: Delete FindFile Structure. ; Parameter(s): $l_FTPSession - Array from _FTPOpen() ; Requirement(s): wininet.dll ; Return Value(s): On Success - 1 ; On Failure - 0 ; Author(s): Dick Bronsdijk ; ;=============================================================================== Func _FTPFileFindClose($l_FTPSession) Local $ai_FTPPutFile = DllCall($l_FTPSession[1], 'int', 'InternetCloseHandle', 'long', $l_FTPSession[5]) If @error OR $ai_FTPPutFile[0] = 0 Then SetError(-1) Return "" EndIf Return $ai_FTPPutFile[0] EndFunc;==> _FTPFileFindClose() ;=============================================================================== ; ; Function Name: _FTPClose() ; Description: Closes the _FTPOpen session. ; Parameter(s): $l_InternetSession - Array from _FTPOpen() ; Requirement(s): wininet.dll ; Return Value(s): On Success - 1 ; On Failure - 0 ; Author(s): Wouter van Kesteren ; ;=============================================================================== Func _FTPClose($l_InternetSession) Local $ai_InternetCloseHandle = DllCall($l_InternetSession[1], 'int', 'InternetCloseHandle', 'long', $l_InternetSession[2]) DLLClose($l_InternetSession[1]) If @error OR $ai_InternetCloseHandle[0] = 0 Then SetError(-1) Return 0 EndIf Return $ai_InternetCloseHandle[0] EndFunc ;==> _FTPClose() Edited February 21, 2009 by Manadar github.com/jvanegmond Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now