DataFlex
DataFlex
Upload In-Memory Binary Data to Google Cloud Storage
See more Google Cloud Storage Examples
Demonstrates how to upload in-memory binary data to Google Cloud Storage.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoSbToken
Handle hoHttp
String sJpgUrl
Variant vJpgData
Handle hoJpgData
String sUrl
Variant vResp
Handle hoResp
Integer iResponseCode
String sTemp1
Move False To iSuccess
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
// This example uses a previously obtained access token having permission for the
// scope "https://www.googleapis.com/auth/cloud-platform"
// In this example, Get Google Cloud Storage OAuth2 Access Token,
// the service account access token was saved to a text file. This example fetches the access token from the file..
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbToken
If (Not(IsComObjectCreated(hoSbToken))) Begin
Send CreateComObject of hoSbToken
End
Get ComLoadFile Of hoSbToken "qa_data/tokens/googleCloudStorageAccessToken.txt" "utf-8" To iSuccess
// Send a POST equivalent to this curl command.
// The content of the file is contained in the request body.
// curl -X POST --data-binary @[OBJECT] \
// -H "Authorization: Bearer [OAUTH2_TOKEN]" \
// -H "Content-Type: [OBJECT_CONTENT_TYPE]" \
// "https://www.googleapis.com/upload/storage/v1/b/[BUCKET_NAME]/o?uploadType=media&name=[OBJECT_NAME]"
Get Create (RefClass(cComChilkatHttp)) To hoHttp
If (Not(IsComObjectCreated(hoHttp))) Begin
Send CreateComObject of hoHttp
End
// Download a JPG image from the Internet, and then upload this JPG to
// a Google Storage bucket.
Move "https://www.chilkatsoft.com/images/starfish.jpg" To sJpgUrl
Get Create (RefClass(cComChilkatBinData)) To hoJpgData
If (Not(IsComObjectCreated(hoJpgData))) Begin
Send CreateComObject of hoJpgData
End
Get pvComObject of hoJpgData to vJpgData
Get ComDownloadBd Of hoHttp sJpgUrl vJpgData To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoHttp To sTemp1
Showln sTemp1
Procedure_Return
End
Get ComGetAsString Of hoSbToken To sTemp1
Set ComAuthToken Of hoHttp To sTemp1
// Construct a URL to upload to an object named "starfish.jpg" in the "chilkat-ocean" bucket.
Get ComSetUrlVar Of hoHttp "bucket_name" "chilkat-ocean" To iSuccess
Get ComSetUrlVar Of hoHttp "object_name" "starfish.jpg" To iSuccess
Move "https://www.googleapis.com/upload/storage/v1/b/{$bucket_name}/o?uploadType=media&name={$object_name}" To sUrl
Get Create (RefClass(cComChilkatHttpResponse)) To hoResp
If (Not(IsComObjectCreated(hoResp))) Begin
Send CreateComObject of hoResp
End
Get pvComObject of hoJpgData to vJpgData
Get pvComObject of hoResp to vResp
Get ComHttpBd Of hoHttp "POST" sUrl vJpgData "image/jpeg" vResp To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoHttp To sTemp1
Showln sTemp1
Procedure_Return
End
Get ComStatusCode Of hoResp To iResponseCode
If (iResponseCode = 401) Begin
Get ComBodyStr Of hoResp To sTemp1
Showln sTemp1
Showln "If invalid credentials, then it is likely the access token expired."
Showln "Your app should automatically fetch a new access token and re-try."
Procedure_Return
End
Showln "Response code: " iResponseCode
Showln "Response body"
Get ComBodyStr Of hoResp To sTemp1
Showln sTemp1
// A successful response looks like this:
// Response code: 200
// Response body
// {
// "kind": "storage#object",
// "id": "chilkat-ocean/starfish.jpg/1502670320090292",
// "selfLink": "https://www.googleapis.com/storage/v1/b/chilkat-ocean/o/starfish.jpg",
// "name": "starfish.jpg",
// "bucket": "chilkat-ocean",
// "generation": "1502670320090292",
// "metageneration": "1",
// "contentType": "image/jpeg",
// "timeCreated": "2017-08-14T00:25:20.040Z",
// "updated": "2017-08-14T00:25:20.040Z",
// "storageClass": "MULTI_REGIONAL",
// "timeStorageClassUpdated": "2017-08-14T00:25:20.040Z",
// "size": "6229",
// "md5Hash": "LpxZ2/JmI2fcl9/dqF2gSA==",
// "mediaLink": "https://www.googleapis.com/download/storage/v1/b/chilkat-ocean/o/starfish.jpg?generation=1502670320090292&alt=media",
// "crc32c": "9RjgwQ==",
// "etag": "CLT5kpW71dUCEAE="
// }
End_Procedure