From bab96f5162bbcb239dddad17c5f5d53137c239d1 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 3 Mar 2026 00:18:45 +0800 Subject: [PATCH] ADD UPDATA o --- src/tencent_cos.cpp | 57 ++++++++++++++++++++++++++++++++++++++++++ src/tencent_cos.h | 1 + target/tencent_cos.lua | 3 +++ 3 files changed, 61 insertions(+) diff --git a/src/tencent_cos.cpp b/src/tencent_cos.cpp index b322805..ef6a9bf 100644 --- a/src/tencent_cos.cpp +++ b/src/tencent_cos.cpp @@ -84,6 +84,63 @@ std::string module::tencent_cos::upfile(const std::string& appid,const std::stri cos_pool_destroy(p); return result; } +std::string module::tencent_cos::updata(const std::string& appid,const std::string& endpoint,const std::string& access_key_id,const std::string& access_key_secret,const std::string& bucket_name,const std::string& object_name,const std::string_view& data) +{ + int enable_checkpoint = COS_FALSE; // 是否开启断点续传 + cos_pool_t* p = NULL; + cos_string_t bucket; + cos_string_t object; + cos_string_t filename; + cos_status_t* s = NULL; + cos_table_t* headers = NULL; + cos_table_t* resp_headers = NULL; + cos_request_options_t* options = NULL; + cos_resumable_clt_params_t* clt_params; + cos_pool_create(&p, NULL); + + + + options = cos_request_options_create(p); + + options->config = cos_config_create(options->pool); + + cos_str_set(&options->config->endpoint, endpoint.c_str()); + cos_str_set(&options->config->access_key_id, access_key_id.c_str()); + cos_str_set(&options->config->access_key_secret, access_key_secret.c_str()); + cos_str_set(&options->config->appid, appid.c_str()); + // cos_str_set(&config->sts_token, token); // 使用临时密钥时的 token + options->config->is_cname = COS_FALSE; // 是否使用自定义域名 + + + options->ctl = cos_http_controller_create(options->pool, 0); + + + headers = cos_table_make(p, 0); + cos_str_set(&bucket, bucket_name.c_str()); + cos_str_set(&object, object_name.c_str()); + + + cos_list_t buffer; + cos_buf_t* content = NULL; + cos_list_init(&buffer); + content = cos_buf_pack(options->pool, data.data(), data.size()); + cos_list_add_tail(&content->node, &buffer); + + s = cos_put_object_from_buffer(options, &bucket, &object, + &buffer, headers, &resp_headers); + + + std::string result = ""; + if (cos_status_is_ok(s)) { + result = ""; + } + else + { + result = "code:" + std::to_string(s->code)+", error_code:"+s->error_code+", error_msg:"+s->error_msg; + } + cos_pool_destroy(p); + return result; +} std::string module::tencent_cos::del(const std::string& appid,const std::string& endpoint,const std::string& access_key_id,const std::string& access_key_secret,const std::string& bucket_name,const std::string& object_name) { diff --git a/src/tencent_cos.h b/src/tencent_cos.h index edc011c..8316eb0 100644 --- a/src/tencent_cos.h +++ b/src/tencent_cos.h @@ -7,6 +7,7 @@ namespace module tencent_cos(); ~tencent_cos() override; std::string upfile(const std::string& appid,const std::string& endpoint,const std::string& access_key_id,const std::string& access_key_secret,const std::string& bucket_name,const std::string& object_name,const std::string& filename); + std::string updata(const std::string& appid,const std::string& endpoint,const std::string& access_key_id,const std::string& access_key_secret,const std::string& bucket_name,const std::string& object_name,const std::string_view& data); std::string del(const std::string& appid,const std::string& endpoint,const std::string& access_key_id,const std::string& access_key_secret,const std::string& bucket_name,const std::string& object_name); static void regist(sol::state* lua); private: diff --git a/target/tencent_cos.lua b/target/tencent_cos.lua index 7698a67..abd94e9 100644 --- a/target/tencent_cos.lua +++ b/target/tencent_cos.lua @@ -20,6 +20,9 @@ end function tencent_cos:upfile(appid,endpoint,access_key_id, access_key_secret,bucket_name,object_name,filename) return self.module:upfile(appid,endpoint,access_key_id, access_key_secret,bucket_name,object_name,filename) end +function tencent_cos:updata(appid,endpoint,access_key_id, access_key_secret,bucket_name,object_name,data) + return self.module:updata(appid,endpoint,access_key_id, access_key_secret,bucket_name,object_name,data) +end function tencent_cos:del(appid,endpoint,access_key_id, access_key_secret,bucket_name,object_name) return self.module:del(appid,endpoint,access_key_id, access_key_secret,bucket_name,object_name) end