Sample code for 30+ languages & platforms
C

Initiate Resumable Upload Session

See more Google Cloud Storage Examples

Initiate a Google Cloud Storage resumable upload session..

Chilkat C Downloads

C
#include <C_CkHttp.h>
#include <C_CkJsonObject.h>
#include <C_CkHttpResponse.h>

void ChilkatSample(void)
    {
    BOOL success;
    HCkHttp http;
    HCkJsonObject jsonToken;
    HCkJsonObject jsonMetaData;
    const char *url;
    HCkHttpResponse resp;
    int statusCode;
    const char *sessionUrl;

    success = FALSE;

    // This example assumes the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    http = CkHttp_Create();

    jsonToken = CkJsonObject_Create();
    success = CkJsonObject_LoadFile(jsonToken,"qa_data/tokens/googleCloudStorage.json");
    if (success == FALSE) {
        printf("%s\n",CkJsonObject_lastErrorText(jsonToken));
        CkHttp_Dispose(http);
        CkJsonObject_Dispose(jsonToken);
        return;
    }

    jsonMetaData = CkJsonObject_Create();
    CkJsonObject_UpdateString(jsonMetaData,"contentType","image/jpeg");

    // Adds the "Authorization: Bearer <access_token>" header..
    CkHttp_putAuthToken(http,CkJsonObject_stringOf(jsonToken,"access_token"));

    CkHttp_SetUrlVar(http,"bucket_name","chilkat-bucket-b");
    CkHttp_SetUrlVar(http,"object_name","penguins2.jpg");
    url = "https://storage.googleapis.com/upload/storage/v1/b/{$bucket_name}/o?uploadType=resumable&name={$object_name}";
    resp = CkHttpResponse_Create();
    success = CkHttp_HttpJson(http,"POST",url,jsonMetaData,"application/json",resp);
    if (success == FALSE) {
        printf("%s\n",CkHttp_lastErrorText(http));
        CkHttp_Dispose(http);
        CkJsonObject_Dispose(jsonToken);
        CkJsonObject_Dispose(jsonMetaData);
        CkHttpResponse_Dispose(resp);
        return;
    }

    statusCode = CkHttpResponse_getStatusCode(resp);
    printf("response status code = %d\n",statusCode);

    sessionUrl = "";

    if (statusCode != 200) {
        printf("%s\n",CkHttpResponse_bodyStr(resp));
    }
    else {
        // The session URL will be used to upload the file in chunks, in subsequent HTTP POSTs...
        sessionUrl = CkHttpResponse_getHeaderField(resp,"Location");
        printf("Session URL = %s\n",sessionUrl);
    }



    CkHttp_Dispose(http);
    CkJsonObject_Dispose(jsonToken);
    CkJsonObject_Dispose(jsonMetaData);
    CkHttpResponse_Dispose(resp);

    }