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
(Tcl) Upload Binary File from MemoryThis example demonstrates how to upload a binary file from memory. It uploads the file to a subdirectory of our choosing.
load ./chilkat.dll set success 1 # This example 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. set gAuth [new_CkAuthGoogle] CkAuthGoogle_put_AccessToken $gAuth "GOOGLE-DRIVE-ACCESS-TOKEN" set rest [new_CkRest] # Connect using TLS. set bAutoReconnect 1 set success [CkRest_Connect $rest "www.googleapis.com" 443 1 $bAutoReconnect] # Provide the authentication credentials (i.e. the access token) CkRest_SetAuthGoogle $rest $gAuth # ------------------------------------------------------------------------- # A multipart upload to Google Drive needs a multipart/related Content-Type CkRest_AddHeader $rest "Content-Type" "multipart/related" # Specify each part of the request. # The 1st part is JSON with information about the file. CkRest_put_PartSelector $rest "1" CkRest_AddHeader $rest "Content-Type" "application/json; charset=UTF-8" # Construct the JSON that will contain the metadata about the file data to be uploaded... set json [new_CkJsonObject] CkJsonObject_AppendString $json "name" "hedgehogs.jpg" CkJsonObject_AppendString $json "description" "A cute photo of two hedgehogs." CkJsonObject_AppendString $json "mimeType" "image/jpeg" # To place the file in a folder, we must add a parents[] array to the JSON # and add the folder 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 find the file ID for the folder "testFolder/abc/123" set gdCache [new_CkCache] CkCache_put_Level $gdCache 0 CkCache_AddRoot $gdCache "C:/ckCache/googleDrive" set folderId [CkCache_fetchText $gdCache "testFolder/abc/123"] if {[CkCache_get_LastMethodSuccess $gdCache] != 1} then { puts "Filepath not found in cache." delete_CkAuthGoogle $gAuth delete_CkRest $rest delete_CkJsonObject $json delete_CkCache $gdCache exit } # parents is a CkJsonArray set parents [CkJsonObject_AppendArray $json "parents"] CkJsonArray_AddStringAt $parents -1 $folderId delete_CkJsonArray $parents CkRest_SetMultipartBodyString $rest [CkJsonObject_emit $json] # The 2nd part is the file content, which will contain the binary image data. CkRest_put_PartSelector $rest "2" CkRest_AddHeader $rest "Content-Type" "image/jpeg" set fac [new_CkFileAccess] set jpgBytes [new_CkByteData] # Read a JPG file from the local filesystem. set success [CkFileAccess_ReadEntireFile $fac "qa_data/jpg/hedgehogs.jpg" $jpgBytes] # Add the bytes to our upload CkRest_SetMultipartBodyBinary $rest $jpgBytes set jsonResponse [CkRest_fullRequestMultipart $rest "POST" "/upload/drive/v3/files?uploadType=multipart"] if {[CkRest_get_LastMethodSuccess $rest] != 1} then { puts [CkRest_lastErrorText $rest] delete_CkAuthGoogle $gAuth delete_CkRest $rest delete_CkJsonObject $json delete_CkCache $gdCache delete_CkFileAccess $fac delete_CkByteData $jpgBytes exit } # A successful response will have a status code equal to 200. if {[CkRest_get_ResponseStatusCode $rest] != 200} then { puts "response status code = [CkRest_get_ResponseStatusCode $rest]" puts "response status text = [CkRest_responseStatusText $rest]" puts "response header: [CkRest_responseHeader $rest]" puts "response JSON: $jsonResponse" delete_CkAuthGoogle $gAuth delete_CkRest $rest delete_CkJsonObject $json delete_CkCache $gdCache delete_CkFileAccess $fac delete_CkByteData $jpgBytes exit } # Show the JSON response. CkJsonObject_Load $json $jsonResponse # Show the full JSON response. CkJsonObject_put_EmitCompact $json 0 puts [CkJsonObject_emit $json] # A successful response looks like this: # { # "kind": "drive#file", # "id": "0B53Q6OSTWYoldmJ0Z3ZqT2x5MFk", # "name": "hedgehogs.jpg", # "mimeType": "image/jpeg" # } # Get the fileId: puts "fileId: [CkJsonObject_stringOf $json id]" delete_CkAuthGoogle $gAuth delete_CkRest $rest delete_CkJsonObject $json delete_CkCache $gdCache delete_CkFileAccess $fac delete_CkByteData $jpgBytes |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.