int main() { unsigned short retcode; //保存服务器http返回码的解析结果; const char *retinfo; //保存通过retcode获得的错误信息 oss_client_t *client = client_initialize_with_endpoint(access_id, access_key, endpoint); const char *bucket_name = "bucket_example"; //设置bucket_name const char *key = "a_group_file.dat"; //设置object group的名称 oss_get_object_group_request_t *request = get_object_group_request_initialize(bucket_name, key); request->set_modified_since_constraint(request, "Sat, 20 Sep 2012 23:23:23 GMT"); oss_object_metadata_t *result = client_head_object_group(client, request, &retcode); printf("head_obejct_group result:\n\n"); if(retcode == OK) { printf("head_object_group successfully.\n"); printf("content-length = %ld\ncontent-type = %s\nlast-modified = %s\n", result->get_content_length(result), result->get_content_type(result), result->get_last_modified(result)); } else { retinfo = oss_get_error_message_from_retcode(retcode); printf("error = %s\n", retinfo); } /* *释放空间 */ if(request != NULL) { get_object_group_request_finalize(request); } if(result) { object_metadata_finalize(result); } client_finalize(client); return 0; }
/* 获取Object的元信息 */ int main() { unsigned short retcode = -1; //保存服务器http返回码的解析结果; const char *retinfo = NULL; //保存通过retcode获得的错误信息 const char *bucket_name = "bucketname001"; //设置bucket_name const char *key = "glib-2.32.4.tar.xz"; //设置key oss_client_t *client = client_initialize_with_endpoint(access_id, access_key, endpoint); oss_object_metadata_t *metadata = client_get_object_metadata(client, bucket_name, key, &retcode); if (retcode == OK) { printf("ETag: %s\n", metadata->get_etag(metadata)); printf("Content-Type: %s\n", metadata->get_content_type(metadata)); printf("Content-Length: %ld\n", metadata->get_content_length(metadata)); printf("Last-Modified: %s\n", metadata->get_last_modified(metadata)); } else { retinfo = oss_get_error_message_from_retcode(retcode); printf("%s\n", retinfo); } if (metadata != NULL) object_metadata_finalize(metadata); client_finalize(client); }
/* 将内存中的内容上传至云服务器中 */ 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; }
/* 将远程服务器上的文件下载到内存中 */ int main() { unsigned short retcode = -1; //保存服务器http返回码的解析结果; const char *retinfo = NULL; //保存通过retcode获得的错误信息 const char *bucket_name = "bucketname001"; //设置bucket_name const char *key = "glibx-2.32.4.tar.xz"; //设置下载 key const char *local_file = "local-file.data"; //设置需要保存到本地的文件名 unsigned int file_len = -1; /**< 远程文件的长度 */ void *buffer = NULL; /* 存放文件内容的缓冲区首指针 */ FILE *fp = fopen(local_file, "w"); 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); oss_get_object_request_t *request = get_object_request_initialize(bucket_name, key); // request->set_range(request, 0, 2 * 1024); /* 将远程服务器上的文件下载到内存中 */ /* 以下两个函数均可以成功调用 */ /* 警告: 获取Object的函数均会返回该对象的元信息,由于元信息是动态动态分配的, * 你需要获取其元信息,并在程序退出时释放它,否则会造成少量的内存泄漏(数百字节) * */ //oss_object_metadata_t *metadata = // client_get_object_to_buffer(client, request, &buffer, &file_len, &retcode); oss_object_metadata_t *metadata = client_get_object_to_buffer_2nd(client, request, &buffer, &file_len, &retcode); if (retcode == OK) { fwrite(buffer, file_len, 1, fp); printf("Get object to buffer successfully.\n"); printf("File length: %d\n", file_len); } else { retinfo = oss_get_error_message_from_retcode(retcode); printf("%s\n", retinfo); } if (buffer != NULL) free(buffer); if (request != NULL) get_object_request_finalize(request); if (metadata != NULL) object_metadata_finalize(metadata); client_finalize(client); 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; }
/* 下载云服务器中的文件至本地文件 */ int main() { unsigned short retcode = -1; //保存服务器http返回码的解析结果; const char *retinfo = NULL; //保存通过retcode获得的错误信息 const char *bucket_name = "bucketname001"; //设置bucket_name const char *key = "glib-2.32.4.tar.xz"; //设置需要下载的key const char *local_file = "local-file.data"; //设置需要下载的本地文件名,可以和key同名 FILE *fp = fopen(local_file, "w"); 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); oss_get_object_request_t *request = get_object_request_initialize(bucket_name, key); // request->set_range(request, 0, 2 * 1024 * 1024); /* 警告: 获取Object的函数均会返回该对象的元信息,由于元信息是动态动态分配的, * 你需要获取其元信息,并在程序退出时释放它,否则会造成少量的内存泄漏(数百字节) * */ oss_object_metadata_t *metadata = client_get_object_to_file(client, request, fp, &retcode); if (retcode == OK) { printf("Get object to file successfully.\n"); } else { retinfo = oss_get_error_message_from_retcode(retcode); printf("%s\n", retinfo); } if (request != NULL) get_object_request_finalize(request); if (metadata != NULL) object_metadata_finalize(metadata); client_finalize(client); fclose(fp); return 0; }