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
(SQL Server) Upload using Azure Storage Account Shared Access Signature (SAS) AuthorizationSample 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.
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls. -- CREATE PROCEDURE ChilkatSample AS BEGIN DECLARE @hr int DECLARE @iTmp0 int -- Important: Do not use nvarchar(max). See the warning about using nvarchar(max). DECLARE @sTmp0 nvarchar(4000) -- 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. DECLARE @rest int -- Use "Chilkat_9_5_0.Rest" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.Rest', @rest OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END -- Connect to the Azure Storage Blob Service DECLARE @bTls int SELECT @bTls = 1 DECLARE @port int SELECT @port = 443 DECLARE @bAutoReconnect int SELECT @bAutoReconnect = 1 -- In this example, the storage account name is "chilkat". DECLARE @success int EXEC sp_OAMethod @rest, 'Connect', @success OUT, 'chilkat.blob.core.windows.net', @port, @bTls, @bAutoReconnect IF @success <> 1 BEGIN EXEC sp_OAGetProperty @rest, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @rest 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 DECLARE @sbToken int -- Use "Chilkat_9_5_0.StringBuilder" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbToken OUT EXEC sp_OAMethod @sbToken, 'LoadFile', @success OUT, 'qa_data/tokens/azureStorageAccountSas.txt', 'utf-8' IF @success <> 1 BEGIN PRINT 'Failed to load SAS token.' EXEC @hr = sp_OADestroy @rest EXEC @hr = sp_OADestroy @sbToken RETURN END -- Add the Shared Access Signature query params for authorization. EXEC sp_OAMethod @sbToken, 'GetAsString', @sTmp0 OUT EXEC sp_OAMethod @rest, 'AddQueryParams', @success OUT, @sTmp0 -- IMPORTANT: Make sure to set the x-ms-blob-type header: EXEC sp_OAMethod @rest, 'AddHeader', @success OUT, 'x-ms-blob-type', 'BlockBlob' -- 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. EXEC sp_OAMethod @rest, 'AddHeader', @success OUT, 'x-ms-date', 'NOW' -- For this example, we'll just load a JPG file into memory.. DECLARE @binData int -- Use "Chilkat_9_5_0.BinData" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.BinData', @binData OUT EXEC sp_OAMethod @binData, 'LoadFile', @success OUT, 'qa_data/jpg/starfish.jpg' IF @success <> 1 BEGIN PRINT 'Failed to load JPG file.' EXEC @hr = sp_OADestroy @rest EXEC @hr = sp_OADestroy @sbToken EXEC @hr = sp_OADestroy @binData 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.. DECLARE @sbResponse int -- Use "Chilkat_9_5_0.StringBuilder" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbResponse OUT EXEC sp_OAMethod @rest, 'FullRequestBd', @success OUT, 'PUT', '/mycontainer/starfish.jpg', @binData, @sbResponse IF @success <> 1 BEGIN EXEC sp_OAGetProperty @rest, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @rest EXEC @hr = sp_OADestroy @sbToken EXEC @hr = sp_OADestroy @binData EXEC @hr = sp_OADestroy @sbResponse RETURN END -- When successful, the Azure Storage service will respond with a 201 response status code, -- with no response body. EXEC sp_OAGetProperty @rest, 'ResponseStatusCode', @iTmp0 OUT IF @iTmp0 <> 201 BEGIN -- Examine the request/response to see what happened. EXEC sp_OAGetProperty @rest, 'ResponseStatusCode', @iTmp0 OUT PRINT 'response status code = ' + @iTmp0 EXEC sp_OAGetProperty @rest, 'ResponseStatusText', @sTmp0 OUT PRINT 'response status text = ' + @sTmp0 EXEC sp_OAGetProperty @rest, 'ResponseHeader', @sTmp0 OUT PRINT 'response header: ' + @sTmp0 EXEC sp_OAMethod @sbResponse, 'GetAsString', @sTmp0 OUT PRINT 'response body (if any): ' + @sTmp0 PRINT '---' EXEC sp_OAGetProperty @rest, 'LastRequestStartLine', @sTmp0 OUT PRINT 'LastRequestStartLine: ' + @sTmp0 EXEC sp_OAGetProperty @rest, 'LastRequestHeader', @sTmp0 OUT PRINT 'LastRequestHeader: ' + @sTmp0 PRINT 'Failed.' EXEC @hr = sp_OADestroy @rest EXEC @hr = sp_OADestroy @sbToken EXEC @hr = sp_OADestroy @binData EXEC @hr = sp_OADestroy @sbResponse RETURN END PRINT 'Success.' EXEC @hr = sp_OADestroy @rest EXEC @hr = sp_OADestroy @sbToken EXEC @hr = sp_OADestroy @binData EXEC @hr = sp_OADestroy @sbResponse END GO |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.