Chilkat Examples

ChilkatHOMEAndroid™Classic ASPCC++C#C# UWP/WinRTDataFlexDelphi ActiveXDelphi DLLVisual FoxProJavaLianjaMFCObjective-CPerlPHP ActiveXPHP ExtensionPowerBuilderPowerShellPureBasicPythonRubySQL ServerSwiftTclUnicode CUnicode C++Visual Basic 6.0VB.NETVB.NET UWP/WinRTVBScriptXojo PluginNode.js

Visual Basic 6.0 Examples

Async
Certificates
ECC
Email Object
Encryption
FTP
HTML-to-XML/Text
Gzip
HTTP
IMAP
JSON
MHT / HTML Email
PEM
PFX/P12
Java KeyStore (JKS)
POP3
RSA Encryption
MIME
REST
SCP
SMTP
Socket/SSL/TLS
SSH Key
SSH
SFTP
Stream
Tar Archive
XML
XMP
Zip

More Examples...
Google APIs
Google Cloud Storage
Azure Cloud Storage
Amazon S3 (new)
Google Drive
ASN.1
PRNG
Amazon S3
Bounced Email
CSV
Diffie-Hellman
DKIM / DomainKey
DSA
NTLM
QuickBooks

 

 

 

 

 

 

 

(Visual Basic 6.0) AWS S3 File Streaming Upload

Demonstrates how to do a streaming upload from a file to the AWS S3 storage service. The AWS authorization presents some difficulties when the REST request body is to be streamed from a file (or from some other source). The issue is that the SHA-256 hash of the file data must be calculated. There are only two possible ways to do this: (1) stream the file into memory in its entirety and calculate the SHA-256 hash prior to uploading, or (2) pre-calculate the SHA-256 in a streaming fashion, and then provide it to the AWS authentication object.

If the application does NOT pre-compute the SHA-256, then Chilkat (internally) is forced to stream into memory, calculate the SHA-256, and then upload from the in-memory copy of the file.

Chilkat ActiveX Downloads

ActiveX for 32-bit and 64-bit Windows

'  This example requires the Chilkat API to have been previously unlocked.
'  See Global Unlock Sample for sample code.

'  This first part is optional.  AWS authentication requires
'  the SHA-256 hash of the request body (i.e. the contents of the file
'  to be uploaded).  We can choose to pre-calculate the SHA-256 in a streaming fashion
'  and then provide it to the authenticator object.  This way, if the file is
'  extremely large, it never needs to completely reside in memory.
Dim crypt As New ChilkatCrypt2
crypt.EncodingMode = "hex"
crypt.HashAlgorithm = "sha-256"
Dim fileToUploadPath As String
fileToUploadPath = "qa_data/xml/hamlet.xml"
Dim hashStr As String
hashStr = crypt.HashFileENC(fileToUploadPath)

Dim rest As New ChilkatRest

'  Connect to the Amazon AWS REST server.
Dim bTls As Long
bTls = 1
Dim port As Long
port = 443
Dim bAutoReconnect As Long
bAutoReconnect = 1
Dim success As Long
success = rest.Connect("s3.amazonaws.com",port,bTls,bAutoReconnect)

'  Provide AWS credentials for the REST call.
Dim authAws As New ChilkatAuthAws
authAws.AccessKey = "AWS_ACCESS_KEY"
authAws.SecretKey = "AWS_SECRET_KEY"
authAws.ServiceName = "s3"
'  Provide the pre-computed SHA-256 here:
authAws.PrecomputedSha256 = hashStr

success = rest.SetAuthAws(authAws)

'  Set the bucket name via the HOST header.
'  In this case, the bucket name is "chilkat100".
rest.Host = "chilkat100.s3.amazonaws.com"

Dim fileStream As New ChilkatStream
fileStream.SourceFile = fileToUploadPath

'  Upload to the S3 Storage service.
'  If the application provided the SHA-256 hash of the file contents (as shown above)
'  then file is streamed and never has to completely reside in memory.
'  If the application did NOT provide the SHA-256, then Chilkat will (internally)
'  load the entire file into memory, calculate the SHA-256, and then upload.
Dim responseStr As String
responseStr = rest.FullRequestStream("PUT","/hamlet.xml",fileStream)
If (rest.LastMethodSuccess <> 1) Then
    Text1.Text = Text1.Text & rest.LastErrorText & vbCrLf
    Exit Sub
End If

Text1.Text = Text1.Text & rest.LastErrorText & vbCrLf

'  When successful, the S3 Storage service will respond with a 200 response code,
'  with an XML body.
If (rest.ResponseStatusCode = 200) Then
    Text1.Text = Text1.Text & responseStr & vbCrLf
    Text1.Text = Text1.Text & "File uploaded." & vbCrLf
Else
    '  Examine the request/response to see what happened.
    Text1.Text = Text1.Text & "response status code = " & rest.ResponseStatusCode & vbCrLf
    Text1.Text = Text1.Text & "response status text = " & rest.ResponseStatusText & vbCrLf
    Text1.Text = Text1.Text & "response header: " & rest.ResponseHeader & vbCrLf
    Text1.Text = Text1.Text & "response body: " & responseStr & vbCrLf
    Text1.Text = Text1.Text & "---" & vbCrLf
    Text1.Text = Text1.Text & "LastRequestStartLine: " & rest.LastRequestStartLine & vbCrLf
    Text1.Text = Text1.Text & "LastRequestHeader: " & rest.LastRequestHeader & vbCrLf
End If


 

© 2000-2016 Chilkat Software, Inc. All Rights Reserved.