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
(PowerShell) REST Asynchronous Streaming Upload FileDemonstrates how to asynchronous streaming upload a file to cloud storage. This particular example demonstrates an upload to the Azure Cloud Storage service. The same concepts apply to S3, Google Cloud, and Google Drive.
Add-Type -Path "C:\chilkat\ChilkatDotNet47-9.5.0-x64\ChilkatDotNet47.dll" # This example requires the Chilkat API to have been previously unlocked. # See Global Unlock Sample for sample code. $rest = New-Object Chilkat.Rest # Connect to the Azure Storage Blob Service $bTls = $true $port = 443 $bAutoReconnect = $true # In this example, the storage account name is "chilkat". $success = $rest.Connect("chilkat.blob.core.windows.net",$port,$bTls,$bAutoReconnect) if ($success -ne $true) { $($rest.LastErrorText) exit } # Provide Azure Cloud credentials for the REST call. $azAuth = New-Object Chilkat.AuthAzureStorage $azAuth.AccessKey = "AZURE_ACCESS_KEY" # The account name used here should match the 1st part of the domain passed in the call to Connect (above). $azAuth.Account = "chilkat" $azAuth.Scheme = "SharedKey" $azAuth.Service = "Blob" # This causes the "x-ms-version: 2021-08-06" header to be automatically added. $azAuth.XMsVersion = "2021-08-06" $success = $rest.SetAuthAzureStorage($azAuth) # Set some request headers. $success = $rest.AddHeader("x-ms-blob-content-disposition","attachment; filename=`"thisIsATest.txt`"") $success = $rest.AddHeader("x-ms-blob-type","BlockBlob") $success = $rest.AddHeader("x-ms-meta-m1","v1") $success = $rest.AddHeader("x-ms-meta-m2","v2") # Note: The application does not need to explicitly set the following # headers: x-ms-date, Authorization, and Content-Length. These headers # are automatically set by Chilkat. $sendStream = New-Object Chilkat.Stream # Define the source data for the stream to be a file. $sendStream.SourceFile = "qa_data/hamlet.xml" # Create a background thread task to upload from the stream # The name of the Azure storage container is "test". $task = $rest.FullRequestStreamAsync("PUT","/test/thisIsATest.txt",$sendStream) # Start the task. $success = $task.Run() # In this example, we'll simply sleep and periodically # check to see if the REST upload if finished. $curPctDone = 0 while ($task.Finished -ne $true) { $task.SleepMs(100) } # Check to see if the call to FullRequestStream in the background thread pool succeeded. if ($task.TaskSuccess -ne $true) { # Show what would've been the LastErrorText had FullRequestStream been called synchronously $($task.ResultErrorText) exit } $responseStatusCode = $rest.ResponseStatusCode # When successful, the Azure Storage service will respond with a 201 response code, # with an empty body. Therefore, in the success condition, the responseStr is empty. if ($responseStatusCode -eq 201) { $("File uploaded.") } else { # It failed, so examine the response body, if one was returned: # Given that FullRequestStream returns a string, the return value is obtained via GetResultString. $responseBodyStr = $task.GetResultString() $("response body (if any): " + $responseBodyStr) # Examine the request/response to see what happened. $("response status code = " + $rest.ResponseStatusCode) $("response status text = " + $rest.ResponseStatusText) $("response header: " + $rest.ResponseHeader) $("---") $("LastRequestStartLine: " + $rest.LastRequestStartLine) $("LastRequestHeader: " + $rest.LastRequestHeader) } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.