Visual FoxPro
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
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