DataFlex
DataFlex
Upload using Azure Storage Account Shared Access Signature (SAS) Authorization
See more Azure Cloud Storage Examples
Sample code to upload binary bytes to a block blob in Azure Cloud Storage using an Azure Storage Account Shared Access Signature (SAS) Authorization. This creates a block blob, or replaces an existing block blob.Note: The maximum size of a block blob created by uploading in a single step is 64MB. For larger files, the upload must be broken up into blocks. There is another Chilkat example for that..
Note: This example requires Chilkat v9.5.0.65 or later.
Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoRest
Boolean iBTls
Integer iPort
Boolean iBAutoReconnect
Handle hoSbToken
Variant vBinData
Handle hoBinData
Variant vSbResponse
Handle hoSbResponse
String sTemp1
Integer iTemp1
Move False To iSuccess
// Note: This example requires Chilkat v9.5.0.65 or greater.
// Azure Blob Service Example: Upload binary bytes to a block blob.
// This uses a Shared Access Signature (SAS) for Authorization.
// This creates a new block blob or replaces an existing one in its entirety.
// See also: https://msdn.microsoft.com/en-us/library/azure/dd179451.aspx
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Get Create (RefClass(cComChilkatRest)) To hoRest
If (Not(IsComObjectCreated(hoRest))) Begin
Send CreateComObject of hoRest
End
// Connect to the Azure Storage Blob Service
Move True To iBTls
Move 443 To iPort
Move True To iBAutoReconnect
// In this example, the storage account name is "chilkat".
Get ComConnect Of hoRest "chilkat.blob.core.windows.net" iPort iBTls iBAutoReconnect To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoRest To sTemp1
Showln sTemp1
Procedure_Return
End
// ----------------------------------------------------------------------------------------------
// The code above this comment could be placed inside a function/subroutine within the application
// because the connection does not need to be made for every request. Once the connection is made
// the app may send many requests..
// ----------------------------------------------------------------------------------------------
// Note: The application does not need to explicitly set the following
// headers: Content-Length, x-ms-date, Authorization. These headers
// are automatically set by Chilkat.
// Let's load a previously computed Azure Storage Account SAS token and use it.
// See How to Create an Azure Storage Account Shared Access Signature
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbToken
If (Not(IsComObjectCreated(hoSbToken))) Begin
Send CreateComObject of hoSbToken
End
Get ComLoadFile Of hoSbToken "qa_data/tokens/azureStorageAccountSas.txt" "utf-8" To iSuccess
If (iSuccess <> True) Begin
Showln "Failed to load SAS token."
Procedure_Return
End
// Add the Shared Access Signature query params for authorization.
Get ComGetAsString Of hoSbToken To sTemp1
Get ComAddQueryParams Of hoRest sTemp1 To iSuccess
// IMPORTANT: Make sure to set the x-ms-blob-type header:
Get ComAddHeader Of hoRest "x-ms-blob-type" "BlockBlob" To iSuccess
// IMPORTANT: Make sure to add the x-ms-date header.
// When the header name is "x-ms-date", Chilkat will recognize the keyword "NOW"
// and will substitute the current system date/time formatted as required by Microsoft.
Get ComAddHeader Of hoRest "x-ms-date" "NOW" To iSuccess
// For this example, we'll just load a JPG file into memory..
Get Create (RefClass(cComChilkatBinData)) To hoBinData
If (Not(IsComObjectCreated(hoBinData))) Begin
Send CreateComObject of hoBinData
End
Get ComLoadFile Of hoBinData "qa_data/jpg/starfish.jpg" To iSuccess
If (iSuccess <> True) Begin
Showln "Failed to load JPG file."
Procedure_Return
End
// Note: The maximum size of a block blob created by uploading in a single step is 64MB.
// For larger files, the upload must be broken up into blocks. There is another Chilkat example for that..
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbResponse
If (Not(IsComObjectCreated(hoSbResponse))) Begin
Send CreateComObject of hoSbResponse
End
Get pvComObject of hoBinData to vBinData
Get pvComObject of hoSbResponse to vSbResponse
Get ComFullRequestBd Of hoRest "PUT" "/mycontainer/starfish.jpg" vBinData vSbResponse To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoRest To sTemp1
Showln sTemp1
Procedure_Return
End
// When successful, the Azure Storage service will respond with a 201 response status code,
// with no response body.
Get ComResponseStatusCode Of hoRest To iTemp1
If (iTemp1 <> 201) Begin
// Examine the request/response to see what happened.
Get ComResponseStatusCode Of hoRest To iTemp1
Showln "response status code = " iTemp1
Get ComResponseStatusText Of hoRest To sTemp1
Showln "response status text = " sTemp1
Get ComResponseHeader Of hoRest To sTemp1
Showln "response header: " sTemp1
Get ComGetAsString Of hoSbResponse To sTemp1
Showln "response body (if any): " sTemp1
Showln "---"
Get ComLastRequestStartLine Of hoRest To sTemp1
Showln "LastRequestStartLine: " sTemp1
Get ComLastRequestHeader Of hoRest To sTemp1
Showln "LastRequestHeader: " sTemp1
Showln "Failed."
Procedure_Return
End
Showln "Success."
End_Procedure