static oss_object_metadata_t * construct_head_object_group_response(curl_request_param_t *user_data) { oss_object_metadata_t *result = object_metadata_initialize(); const char *key, *value; int flag = 1; char *ptr = user_data->header_buffer->ptr; while(*ptr != '\0') { char *tmp = strchr(ptr, '#'); *tmp = '\0'; if(flag % 2) { key = ptr; } else { value = ptr; //if(!strcmp(key, "Content-Length")) { // long length = atol(value); // result->set_content_length(result, length); //} result->add_default_metadata(result, key, value); } ptr = tmp + 1; flag ++; } oss_free_user_data(user_data); return result; }
/* 将内存中的内容上传至云服务器中 */ int main() { unsigned short retcode = -1; //保存服务器http返回码的解析结果; const char *retinfo = NULL; //保存通过retcode获得的错误信息 const char *bucket_name = "bucketexample"; //设置bucket_name const char *key = "put-ojbect.data"; //设置上传key const char *local_file = "proactor.pdf"; //设置需要上传的文件 unsigned int retsize = 0; // 读取文件时的返回值 FILE *fp = fopen(local_file, "r"); if (fp == NULL) { fprintf(stderr, "error in opening file %s\n", local_file); return -1; } oss_client_t *client = client_initialize_with_endpoint(access_id, access_key, endpoint); unsigned int file_len = oss_get_file_size(fp); char *buffer = (char *)malloc(sizeof(char) * file_len + 1); memset(buffer, '\0', file_len + 1); retsize = fread(buffer, 1, file_len, fp); if (retsize < 0) { fprintf(stderr, "error in reading file %s.\n", local_file); return -1; } /* 初始化元信息,并设置相关属性 */ oss_object_metadata_t *metadata = object_metadata_initialize(); metadata->set_content_length(metadata, file_len); /** 该参数必须设置 */ metadata->set_content_type(metadata, "application/octet-stream"); metadata->set_cache_control(metadata, "no-cache"); metadata->set_content_encoding(metadata, "utf-8"); metadata->set_content_disposition(metadata, "attachment;"); metadata->set_expiration_time(metadata, "Thu, 13 Sep 2012 21:08:42 GMT"); /* 将内存中的内容上传至云服务器中 */ oss_put_object_result_t *result = client_put_object_from_buffer(client, bucket_name, key, buffer, metadata, &retcode); if (retcode == OK) { printf("put object from file successfully.\n"); } else { retinfo = oss_get_error_message_from_retcode(retcode); printf("%s\n", retinfo); } if (result != NULL) put_object_result_finalize(result); client_finalize(client); object_metadata_finalize(metadata); free(buffer); fclose(fp); return 0; }
/* 初始化Multipart Upload操作*/ int main() { unsigned short retcode = -1; //保存服务器http返回码的解析结果; const char *retinfo = NULL; //保存通过retcode获得的错误信息 const char *bucket_name = "bucketexample"; //设置bucket_name const char *key = "multipart-upload.data"; //设置key oss_client_t *client = client_initialize_with_endpoint(access_id, access_key, endpoint); #if 1 /* 设置带元信息的Multipart Upload 上传请求 */ oss_object_metadata_t *metadata = object_metadata_initialize(); /* 设置上传对象的元信息 */ metadata->set_content_type(metadata, "application/octet-stream"); metadata->set_cache_control(metadata, "no-cache"); metadata->set_content_encoding(metadata, "utf-8"); metadata->set_content_disposition(metadata, "attachment;"); metadata->set_expiration_time(metadata, "Thu, 31 Oct 2012 21:08:42 GMT"); oss_initiate_multipart_upload_request_t *request = initiate_multipart_upload_request_initialize_with_metadata(bucket_name, key, metadata); #else /* 不带元信息的Multipart Upload上传请求 */ oss_initiate_multipart_upload_request_t *request = initiate_multipart_upload_request_initialize(bucket_name, key, NULL); #endif oss_initiate_multipart_upload_result_t *result = client_initiate_multipart_upload(client, request, &retcode); if (retcode == OK) { printf("%s\n", result->get_upload_id(result)); } else { retinfo = oss_get_error_message_from_retcode(retcode); printf("%s\n", retinfo); } initiate_multipart_upload_result_finalize(result); initiate_multipart_upload_request_finalize(request); object_metadata_finalize(metadata); client_finalize(client); return 0; }
static oss_object_metadata_t * construct_get_object_metadata_response_on_success( curl_request_param_t *user_data) { char *headers = user_data->header_buffer->ptr; oss_object_metadata_t *metadata = object_metadata_initialize(); char tmpbuf[64] = {0}; char *iter = NULL; iter = strtok(headers, "#"); int flag = 0; while (iter != NULL) { if (flag % 2 == 0) { memset(tmpbuf, 0, 64); strncpy(tmpbuf, iter, 64); } else { metadata->add_default_metadata(metadata, tmpbuf, iter); } iter = strtok(NULL, "#"); flag++; } oss_free_user_data(user_data); return metadata; }