在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/C/ 七牛云存儲(chǔ) 文件追加上傳

七牛云存儲(chǔ) 文件追加上傳

現(xiàn)在需要將一臺(tái)設(shè)備實(shí)時(shí)生成視頻流文件存儲(chǔ)到云端,但是在七牛的c-sdk中,沒(méi)有發(fā)現(xiàn)類(lèi)似于阿里云的文件追加上傳接口,只有一個(gè)分片上傳接口但是被封裝起來(lái)了,沒(méi)有類(lèi)似的Demo。

阿里云相關(guān)接口:

void append_object_from_buffer()
{
    aos_pool_t *p = NULL;
    aos_string_t bucket;
    aos_string_t object;
    char *str = "test oss c sdk";
    aos_status_t *s = NULL;
    int64_t position = 0;
    aos_table_t *headers1 = NULL;
    aos_table_t *headers2 = NULL;
    aos_table_t *resp_headers = NULL;
    oss_request_options_t *options = NULL;
    aos_list_t buffer;
    aos_buf_t *content = NULL;
    char *next_append_position = NULL;
    aos_pool_create(&p, NULL);
    /* 創(chuàng)建并初始化options */
    options = oss_request_options_create(p);
    init_options(options);
    /* 初始化參數(shù) */
    headers1 = aos_table_make(p, 0);
    aos_str_set(&bucket, "<您的bucket名字>");
    aos_str_set(&object, "<您的object名字>");
    /* 獲取起始追加位置 */
    s = oss_head_object(options, &bucket, &object, headers1, &resp_headers);
    if (aos_status_is_ok(s)) {
        next_append_position = (char*)(apr_table_get(resp_headers, 
                        "x-oss-next-append-position"));
        position = atoi(next_append_position);
    }
    /* 追加文件 */
    headers2 = aos_table_make(p, 0);
    aos_list_init(&buffer);
    content = aos_buf_pack(p, str, strlen(str));
    aos_list_add_tail(&content->node, &buffer);
    s = oss_append_object_from_buffer(options, &bucket, &object, 
            position, &buffer, headers2, &resp_headers);
    /* 判斷是否追加成功 */
    if (aos_status_is_ok(s))
    {
        printf("append object from buffer succeeded\n");
    } else {
        printf("append object from buffer failed\n");
    }
    /* 釋放資源*/
    aos_pool_destroy(p);
}

七牛上有個(gè)好像是我需求的接口,但是沒(méi)Demo和幫助文檔,所以不知道該如何使用:

Qiniu_Error Qiniu_Io_PutStream(
        Qiniu_Client *self, Qiniu_Io_PutRet *ret,
        const char *uptoken, const char *key,
        void *ctx, size_t fsize, rdFunc rdr,
        Qiniu_Io_PutExtra *extra) {
    Qiniu_Io_form form;
    Qiniu_Io_form_init(&form, uptoken, key, &extra);

    if (key == NULL) {
        // Use an empty string instead of the NULL pointer to prevent the curl lib from crashing
        // when read it.
        // **NOTICE**: The magic variable $(filename) will be set as empty string.
        key = "";
    }

    // Add 'filename' property to make it like a file upload one
    // Otherwise it may report: CURL_ERROR(18) or "multipart/message too large"
    // See https://curl.haxx.se/libcurl/c/curl_formadd.html#CURLFORMSTREAM
    // FIXED by fengyh 2017-03-22 10:30
    curl_formadd(
            &form.formpost, &form.lastptr,
            CURLFORM_COPYNAME, "file",
            CURLFORM_FILENAME, "filename",
            CURLFORM_STREAM, ctx,
            CURLFORM_CONTENTSLENGTH, fsize,
            CURLFORM_END);

    return Qiniu_Io_call_with_callback(self, ret, form.formpost, rdr, extra);
}
回答
編輯回答
逗婦乳

你好,七牛最近推出了追加上傳的功能。

https://developer.qiniu.com/k...

2017年8月27日 12:38