通过HTTP请求将文件上载到Google Drive(C)

通过HTTP请求将文件上载到Google Drive(C),c,rest,http,google-drive-api,libcurl,C,Rest,Http,Google Drive Api,Libcurl,我想上传文件到谷歌驱动器使用C编程 我遵循以下的指示& 但我不知道应该用[JPEG\u DATA]替换什么。是指文件名吗 对于内容长度:[文件中的字节数],这是否意味着我应该用计算机显示的精确文件大小替换它 到目前为止我写的代码: curl_handle = curl_easy_init(); struct curl_slist *header = NULL; /* Content-Type: image/jpeg */ header = curl_slist_append(header,

我想上传文件到谷歌驱动器使用C编程

我遵循以下的指示&

但我不知道应该用
[JPEG\u DATA]
替换什么。是指文件名吗

对于
内容长度:[文件中的字节数]
,这是否意味着我应该用计算机显示的精确文件大小替换它

到目前为止我写的代码:

curl_handle = curl_easy_init();

struct curl_slist *header = NULL;

/* Content-Type: image/jpeg */
header = curl_slist_append(header, "Content-Type: image/jpeg");
不确定要在下面的
[文件中的字节数]
中放入什么

/* Content-Length: [NUMBER_OF_BYTES_IN_FILE] */
header = curl_slist_append(header, "Content-Length:[NUMBER_OF_BYTES_IN_FILE]");

谢谢大家!

[JPEG\u DATA]
将是文件的确切内容,逐字节
[文件中的字节数]
是文件的大小,同时也是
[JPEG\u数据]
中的字节数


您可以查看如何向POST请求添加有效负载,以及如何从文件中增量读取数据。

@ybungalobill您好,但如果我想上传图片,如何键入图片内容?您好,我不太明白如何键入图片的确切内容photo@VanessaLeung:您不需要“键入”它,如链接示例所示,通过回调读取并发送它
/* Content-Length: [NUMBER_OF_BYTES_IN_FILE] */
header = curl_slist_append(header, "Content-Length:[NUMBER_OF_BYTES_IN_FILE]");
/* Authorization: Bearer [YOUR_AUTH_TOKEN] */
char auth[200];
strcat(auth, "Authorization: Bearer ");
strcat(auth, access_token);

header = curl_slist_append(header, auth);

curl_easy_setopt(curl_handle, CURLOPT_HTTPHEADER, header);

/* POST https://www.googleapis.com/upload/drive/v3/files?uploadType=media HTTP/1.1 */
curl_easy_setopt(curl_handle, CURLOPT_URL, "https://www.googleapis.com/upload/drive/v3/files");

curl_easy_setopt(curl_handle, CURLOPT_POSTFIELDS, "uploadType=media");

curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);

curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)&chunk);

curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "libcurl-agent/1.0");

res = curl_easy_perform(curl_handle);

/* Print response */
if(res != CURLE_OK) {
    fprintf(stderr, "curl_easy_perform() failed: %s\n",
    curl_easy_strerror(res4));
}

else {
    printf("%s\n", chunk.memory);
}

curl_easy_cleanup(curl_handle);

free(chunk.memory);