Sample code for 30+ languages & platforms
Visual FoxPro

Upload Application Specific Data

See more Google Drive Examples

Uploads a text file (application specific data) where the contents of the file are contained in a string variable.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loJsonToken
LOCAL loGAuth
LOCAL loRest
LOCAL lnBAutoReconnect
LOCAL loJson
LOCAL lcFileContents
LOCAL lcJsonResponse

lnSuccess = 0

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 application specific data scope.
loJsonToken = CreateObject('Chilkat.JsonObject')
lnSuccess = loJsonToken.LoadFile("qa_data/tokens/googleDriveAppData.json")

loGAuth = CreateObject('Chilkat.AuthGoogle')
loGAuth.AccessToken = loJsonToken.StringOf("access_token")

loRest = CreateObject('Chilkat.Rest')

*  Connect using TLS.
lnBAutoReconnect = 1
lnSuccess = loRest.Connect("www.googleapis.com",443,1,lnBAutoReconnect)

*  Provide the authentication credentials (i.e. the access token)
loRest.SetAuthGoogle(loGAuth)

*  A multipart upload to Google Drive needs a multipart/related Content-Type
loRest.AddHeader("Content-Type","multipart/related")

*  Specify each part of the request.

*  The 1st part is JSON with information about the file.
loRest.PartSelector = "1"
loRest.AddHeader("Content-Type","application/json; charset=UTF-8")

loJson = CreateObject('Chilkat.JsonObject')
loJson.EmitCompact = 0

loJson.UpdateString("name","helloWorld.txt")
loJson.UpdateString("description","A simple text file that says Hello World.")
loJson.UpdateString("mimeType","text/plain")
*  Specifiy the application-specific data folder.
loJson.UpdateString("parents[0]","appDataFolder")
loRest.SetMultipartBodyString(loJson.Emit())

? loJson.Emit()

*  The JSON looks like this:
*  {
*    "name": "helloWorld.txt",
*    "description": "A simple text file that says Hello World.",
*    "mimeType": "text/plain",
*    "parents": [
*      "appDataFolder"
*    ]
*  }

*  The 2nd part is the file content.
*  In this case, we'll upload a simple text file containing "Hello World!"
loRest.PartSelector = "2"
loRest.AddHeader("Content-Type","text/plain")

lcFileContents = "Hello World!"
loRest.SetMultipartBodyString(lcFileContents)

lcJsonResponse = loRest.FullRequestMultipart("POST","/upload/drive/v3/files?uploadType=multipart")
IF (loRest.LastMethodSuccess <> 1) THEN
    ? loRest.LastErrorText
    RELEASE loJsonToken
    RELEASE loGAuth
    RELEASE loRest
    RELEASE loJson
    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
    ? "response JSON: " + lcJsonResponse
    RELEASE loJsonToken
    RELEASE loGAuth
    RELEASE loRest
    RELEASE loJson
    CANCEL
ENDIF

*  Show the JSON response.
loJson.Load(lcJsonResponse)

*  Show the full JSON response.
loJson.EmitCompact = 0
? loJson.Emit()

*  A successful response looks like this:
*  {
*    "kind": "drive#file",
*    "id": "0B53Q6OSTWYoldmJ0Z3ZqT2x5MFk",
*    "name": "Untitled",
*    "mimeType": "text/plain"
*  }

*  Get the fileId:
? "fileId: " + loJson.StringOf("id")

RELEASE loJsonToken
RELEASE loGAuth
RELEASE loRest
RELEASE loJson