Sample code for 30+ languages & platforms
Lua

Download Text File to a String Variable

See more Google Drive Examples

This example demonstrates how to download the content of a text file from Google Drive into a string variable.

Chilkat Lua Downloads

Lua
local chilkat = require("chilkat")

local success = true

-- 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.

local gAuth = chilkat.AuthGoogle.new()
gAuth.access_token = "GOOGLE-DRIVE-ACCESS-TOKEN"

local rest = chilkat.Rest.new()

-- 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.
local bAutoReconnect = true
success = rest:connect("www.googleapis.com", 443, true, bAutoReconnect)

-- Provide the authentication credentials (i.e. the access token)
rest:set_auth_google(gAuth)

-- ------------------------------------------------------------------------------
-- 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/pigs.json".
-- First we lookup the fileId in the cache.  With the fileId, we can download the file.
local gdCache = chilkat.Cache.new()
gdCache.level = 0
gdCache:add_root("C:/ckCache/googleDrive")

local fileId = gdCache:fetch_text("testFolder/abc/123/pigs.json")
if not gdCache.last_method_success then
    print("Filepath not found in cache.")
    return
end

-- 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.
local sbPath = chilkat.StringBuilder.new()
sbPath:append("/drive/v3/files/")
sbPath:append(fileId)
rest:add_query_param("alt", "media")

-- The FullRequestNoBody returns the file content in the response body.
local fileContent = rest:full_request_no_body("GET", sbPath:get_as_string())
if not rest.last_method_success then
    print(rest.last_error_text)
    return
end

-- A successful response will have a status code equal to 200.
if rest.response_status_code ~= 200 then
    print("response status code = " .. rest.response_status_code)
    print("response status text = " .. rest.response_status_text)
    print("response header: " .. rest.response_header)
    return
end

print(fileContent)

print("File downloaded.")