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 File (Stream to Local Filesystem)This example demonstrates how to download the content of a file from Google Drive. The file is streamed to the local filesystem.
LOCAL lnSuccess LOCAL loGAuth LOCAL loRest LOCAL lnBAutoReconnect LOCAL loGdCache LOCAL lcFileId LOCAL loSbPath LOCAL loFileStream LOCAL lcJsonResponse 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") * Create a stream object with a SinkFile set to the path where the downloaded file will go. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Stream') loFileStream = CreateObject('Chilkat.Stream') loFileStream.SinkFile = "qa_output/penguins.jpg" * Indicate that the response body should stream directly to fileStream, * but only if the response status is 200. loRest.SetResponseBodyStream(200,1,loFileStream) * Download the file, streaming the content to the SinkFile. lcJsonResponse = loRest.FullRequestNoBody("GET",loSbPath.GetAsString()) IF (loRest.LastMethodSuccess <> 1) THEN ? loRest.LastErrorText RELEASE loGAuth RELEASE loRest RELEASE loGdCache RELEASE loSbPath RELEASE loFileStream CANCEL ENDIF * A successful response will have a status code equal to 200. IF (loRest.ResponseStatusCode <> 200) THEN ? "response status code = " + STR(loRest.ResponseStatusCode) ? "response status text = " + loRest.ResponseStatusText ? "response header: " + loRest.ResponseHeader RELEASE loGAuth RELEASE loRest RELEASE loGdCache RELEASE loSbPath RELEASE loFileStream CANCEL ENDIF ? "File downloaded." RELEASE loGAuth RELEASE loRest RELEASE loGdCache RELEASE loSbPath RELEASE loFileStream |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.