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;
	
}
Esempio n. 2
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;
}
Esempio n. 3
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;
}