Example #1
0
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;
}
Example #2
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);
}
Example #3
0
/* 将内存中的内容上传至云服务器中 */
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;
}
Example #4
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;

}
Example #6
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;

}