Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(AutoIt) SFTP Upload Large File in PartsSee more SFTP ExamplesDemonstrates how to split a large file into N parts and then upload each part separately. This technique can be used to potentially avoid limits a SFTP server might impose on upload file size.
; This example assumes the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. $oSftp = ObjCreate("Chilkat.SFtp") ; Set some timeouts, in milliseconds: $oSftp.ConnectTimeoutMs = 5000 $oSftp.IdleTimeoutMs = 10000 ; Connect to the SSH server. ; The standard SSH port = 22 ; The hostname may be a hostname or IP address. Local $sHostname = "sftp.example.com" Local $iPort = 22 Local $bSuccess = $oSftp.Connect($sHostname,$iPort) If ($bSuccess <> True) Then ConsoleWrite($oSftp.LastErrorText & @CRLF) Exit EndIf ; Authenticate with the SSH server. Chilkat SFTP supports ; both password-based authenication as well as public-key ; authentication. This example uses password authenication. $bSuccess = $oSftp.AuthenticatePw("myLogin","myPassword") If ($bSuccess <> True) Then ConsoleWrite($oSftp.LastErrorText & @CRLF) Exit EndIf ; After authenticating, the SFTP subsystem must be initialized: $bSuccess = $oSftp.InitializeSftp() If ($bSuccess <> True) Then ConsoleWrite($oSftp.LastErrorText & @CRLF) Exit EndIf ; Open a remote file for writing on the SSH server. ; If the file already exists, it is overwritten. ; (Specify "createNew" instead of "createTruncate" to ; prevent overwriting existing files.) Local $sHandle = $oSftp.OpenFile("big.zip","writeOnly","createTruncate") If ($oSftp.LastMethodSuccess <> True) Then ConsoleWrite($oSftp.LastErrorText & @CRLF) Exit EndIf ; We're going to upload the local file "qa_data/zips/big.zip" (a relative local path from our current working directory) ; to the SFTP server. Local $sLocalFilePath = "qa_data/zips/big.zip" ; Rather than uploading in one shot, we'll read the local file in chunks ; and upload a chunk at a time. $oFac = ObjCreate("Chilkat.FileAccess") $bSuccess = $oFac.OpenForRead($sLocalFilePath) If ($bSuccess = False) Then $oSftp.CloseHandle($sHandle) ConsoleWrite($oFac.LastErrorText & @CRLF) Exit EndIf ; If we were to split the local file into 128K chunks, how many chunks (blocks) would ; we have, including the last partial block? Local $iBlockSize = 131072 Local $iNumBlocks = $oFac.GetNumBlocks($iBlockSize) ConsoleWrite("Number of blocks = " & $iNumBlocks & @CRLF) $oBd = ObjCreate("Chilkat.BinData") Local $i = 0 While $i < $iNumBlocks ; Read the Nth block, which gets appended to the bd. (which means ; we must clear the contents of bd before the next iteration) $bSuccess = $oFac.ReadBlockBd($i,$iBlockSize,$oBd) If ($bSuccess = False) Then $oSftp.CloseHandle($sHandle) ConsoleWrite($oFac.LastErrorText & @CRLF) Exit EndIf ; Upload this block to the open remote file. $bSuccess = $oSftp.WriteFileBd($sHandle,$oBd) If ($bSuccess = False) Then ConsoleWrite($oSftp.LastErrorText & @CRLF) Exit EndIf ; Clear the contents for the next iteration. $oBd.Clear() $i = $i + 1 Wend ; Close the local file. $oFac.FileClose ; ----------------------------------------------------------------------------- ; This is important. You must close the handle on the server. ; Otherwise open handles will accumulate on the server until eventually a limit ; is reached and the server will fail on a call to OpenFile. ; ----------------------------------------------------------------------------- ; Close the remote file handle on the server. $bSuccess = $oSftp.CloseHandle($sHandle) If ($bSuccess <> True) Then ConsoleWrite($oSftp.LastErrorText & @CRLF) Exit EndIf ConsoleWrite("Success." & @CRLF) |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.