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
(Visual FoxPro) Download Binary File to In-Memory BytesThis example demonstrates how to download the binary content of a file from Google Drive directly into local memory.
LOCAL lnSuccess LOCAL loGAuth LOCAL loRest LOCAL lnBAutoReconnect LOCAL loGdCache LOCAL lcFileId LOCAL loSbPath LOCAL lnStatusCode LOCAL lcErrResponseBody LOCAL loJpgBytes LOCAL loFac lnSuccess = 1 * It 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 * Google Drive scope. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.AuthGoogle') loGAuth = CreateObject('Chilkat.AuthGoogle') loGAuth.AccessToken = "GOOGLE-DRIVE-ACCESS-TOKEN" * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Rest') loRest = CreateObject('Chilkat.Rest') * Connect using TLS. * A single REST object, once connected, can be used for many Google Drive REST API calls. * The auto-reconnect indicates that if the already-established HTTPS connection is closed, * then it will be automatically re-established as needed. lnBAutoReconnect = 1 lnSuccess = loRest.Connect("www.googleapis.com",443,1,lnBAutoReconnect) * Provide the authentication credentials (i.e. the access token) loRest.SetAuthGoogle(loGAuth) * ------------------------------------------------------------------------------ * To download a file, we must know the file ID. * In a previous example (see Build Local Metadata Cache * we built a local cache to make it easy to lookup file IDs given a file path. * Let's say we want to download "testFolder/abc/123/penguins.jpg". * First we lookup the fileId in the cache. With the fileId, we can download the file. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Cache') loGdCache = CreateObject('Chilkat.Cache') loGdCache.Level = 0 loGdCache.AddRoot("C:/ckCache/googleDrive") lcFileId = loGdCache.FetchText("testFolder/abc/123/penguins.jpg") IF (loGdCache.LastMethodSuccess <> 1) THEN ? "Filepath not found in cache." RELEASE loGAuth RELEASE loRest RELEASE loGdCache CANCEL ENDIF * We need to send a GET request like this: * GET https://www.googleapis.com/drive/v3/files/fileId?alt=media * The fileId is part of the path. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.StringBuilder') loSbPath = CreateObject('Chilkat.StringBuilder') loSbPath.Append("/drive/v3/files/") loSbPath.Append(lcFileId) loRest.AddQueryParam("alt","media") * To download to memory, we'll send the request in one call, then receive * the response header, and then the response body. * If the response header indicates failure or an unexpected response, then the * body is not the data we desire. * First send the HTTP request. lnSuccess = loRest.SendReqNoBody("GET",loSbPath.GetAsString()) IF (lnSuccess <> 1) THEN ? loRest.LastErrorText RELEASE loGAuth RELEASE loRest RELEASE loGdCache RELEASE loSbPath CANCEL ENDIF * Get the response header. lnStatusCode = loRest.ReadResponseHeader() IF (lnStatusCode <> 200) THEN ? "response status code = " + STR(loRest.ResponseStatusCode) ? "response status text = " + loRest.ResponseStatusText ? "response header: " + loRest.ResponseHeader * Read the response body (which should be error text or HTML) lcErrResponseBody = loRest.ReadRespBodyString() IF (loRest.LastMethodSuccess = 1) THEN ? "response body: " + lcErrResponseBody ENDIF RELEASE loGAuth RELEASE loRest RELEASE loGdCache RELEASE loSbPath CANCEL ENDIF * Read the response body, which should contain the file data. loJpgBytes = loRest.ReadRespBodyBinary() IF (loRest.LastMethodSuccess <> 1) THEN ? loRest.LastErrorText RELEASE loGAuth RELEASE loRest RELEASE loGdCache RELEASE loSbPath CANCEL ENDIF * Save jpgBytes to a file so we can examine the file to verify that it worked. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.FileAccess') loFac = CreateObject('Chilkat.FileAccess') loFac.WriteEntireFile("qa_output/penguins_out.jpg",loJpgBytes) ? "File downloaded." RELEASE loGAuth RELEASE loRest RELEASE loGdCache RELEASE loSbPath RELEASE loFac |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.